更改docker-compose中的卷configuration,而不会丢失数据
我的docker-compose有一个数据容器,它没有映射到主机上的一个本地目录,我想把它改成:
volumes: - /var/www/html
至
volumes: - /html:/var/www/html
但是,当我将重新启动容器时,它将删除当前的数据容器并将其replace为新的容器。
我知道容器实际上还在那里,但有没有一种简单的方法来创build一个新的数据容器。
我的docker-compose版本是1.7.1(在boot2docker下)。
谢谢。
尝试自己的风险:
- 根据需要创build你的主机目录
/html
-
docker inspect {container_name} | grep Source
docker inspect {container_name} | grep Source
并获取主机系统上的卷path。 它会像/var/lib/docker/volumes/abdb15a2eff[...]/_data
- 将该目录的内容复制到主机目录
- 根据需要重新创build容器。
一个安全的方法是从Docker镜像中创build数据的备份。 然后将该备份恢复到主机上的目录。 Docker Volumes Tutorial在底部提到了类似这样的过程。
以下是你如何做到这一点:
首先,从你的主机上挂载一个目录到容器中,如果你还没有挂载一个目录的话。可能是一个像./:/backup
这样的./:/backup
。 接下来,像这样运行一个备份命令:
docker-compose run service-name tar czvf /backup/html_data.tar.gz /var/www/html
现在你的目录下有html_data.tar.gz
。 提取它,无论你想要的,并在你的路上!
(我假设,根据你指出你的卷的方式,你使用的是docker-compose,这个过程与vanilla Docker类似。)
备用方法,带--volumes-from
使用要复制的数据获取容器的名称(或散列)。 你可以用docker ps
做这个。 对于这个例子,我们称之为container1
。 现在运行这个命令来备份它的数据:
docker run --rm --volumes-from container1 -v $(pwd):/backup ubuntu:latest tar czvf /backup/html_data.tar.gz /var/www/html
请注意,您使用的映像( ubuntu:latest
)并不重要,只要它可以tar的东西。
- Docker提交不保存我的容器的更改状态
- 从Docker容器连接到主机服务的典型方法
- Docker-compose安装:没有名为docker.errors的模块
- 用php文件构build容器对于运行docker容器的用户是不可访问的?
- 如何在没有-A选项的情况下运行芹菜状态/花?
- stub.GetHistoryKeys()报告GetHistoryKeys()函数未定义。 当试图去build立我的Chaincode
- 针对远程集群configurationkubectl
- Dockerconfiguration使用systemdconfiguration样式
- SQLITE == 3.13.1版本无法从docker中的requirments文件中下载