我有以下容器:
他们三个联系在一起,工作得很好。但问题是,每次我在网站(数据容器)中更改它时,它都会重建(当然),我必须删除该容器以及FPM和NGINX并重新创建它们以便能够读取新内容。
我开始使用“备份方法”,将数据从容器复制到主机目录并将其安装到FPM和NGINX容器中,这样我就可以在不重新启动/删除任何服务的情况下更新数据。
但是将数据从数据容器移动到主机的想法,真的不喜欢我。所以想知道是否有“码头方式”或更好的方式。
谢谢!
更新:添加更多上下文
Dockerfile d`ata容器定义
FROM debian
ADD data/* /home/mustela/
VOLUME /home/mustela/
data
只有2个文件:hello.1
和hello.2
编译图像:
docker build -t="mustela/data" .
运行数据容器:
docker run --name mustela-data mustela/data
创建另一个容器以链接到前一个容器:
docker run -d -it --name nginx --volumes-from mustela-data ubuntu bash
列出已安装的文件:
docker exec -it nginx ls /mustela/home
结果:
hello.1 hello.2
现在,让我们重建数据容器图片,但首先添加一些新文件,所以现在在data
内我们有hello.1 hello.2 hello.3 hello.4
docker rm mustela-data
docker build -t="mustela/data" .
docker run --name mustela-data mustela/data
如果我从正在运行的容器中ls /home/mustela
,则文件未更新:
docker exec -it nginx ls /mustela/home
结果:
hello.1 hello.2
但如果我运行一个新容器,我可以看到文件
docker run -it --name nginx2 --volumes-from mustela-data ubuntu ls /home/mustela
结果:hello.1 hello.2 hello.3 hello.4