我的docker-compose有一个数据容器,它没有映射到主机的本地目录,我想从以下位置更改它:
volumes:
- /var/www/html
到
volumes:
- /html:/var/www/html
但是当我重新启动容器时,它将删除当前数据容器并将其替换为新容器。
我知道容器实际上仍然存在,但有一种简单的方法可以在不创建新数据容器的情况下完成。
我的docker-compose版本是1.7.1(在boot2docker下)。
感谢。
答案 0 :(得分:1)
自担风险:
/html
docker inspect {container_name} | grep Source
并抓住主机系统上的卷路径。它会像/var/lib/docker/volumes/abdb15a2eff[...]/_data
答案 1 :(得分:0)
一种安全的方法是从Docker镜像内部创建数据备份。然后将该备份还原到主机上的目录。 Docker Volumes Tutorial在底部附近提到了这样的过程。
以下是你的表现:
首先,如果您还没有安装目录,请将主机上的目录安装到容器中。也许是./:/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
)并不重要,只要它可以解决问题。