跨容器共享和更新docker数据容器
我有以下容器:跨容器共享和更新docker数据容器,docker,containers,Docker,Containers,我有以下容器: 从github repo直接在quay.io中构建的数据容器基本上是一个网站 FPM集装箱 NGINX容器 他们三个连在一起,工作得很好。但问题是,每次我在网站(数据容器)中更改某些内容时,它都会被重建(当然),我必须删除该容器以及FPM和NGINX,然后重新创建它们,以便能够读取新内容 我从“备份方法”开始,将数据从容器复制到主机目录,并将其装载到FPM和NGINX容器中,这样我就可以更新数据,而无需重新启动/删除任何服务 但是将数据从数据容器移动到主机的想法,真的不喜欢我
- 从github repo直接在quay.io中构建的数据容器基本上是一个网站
- FPM集装箱
- NGINX容器
FROM debian
ADD data/* /home/mustela/
VOLUME /home/mustela/
其中,data
只有两个文件:hello.1
和hello.2
编译图像:
docker build-t=“mustela/data”。
运行数据容器:
docker run——名称mustela data mustela/data
创建另一个容器以链接到上一个容器:
docker run-d-it--name nginx--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
如果运行容器中的Ils/home/mustela
,则不会更新文件:
docker exec-it nginx ls/mustela/home
结果:
hello.1 hello.2
但是如果我运行一个新的容器,我可以看到文件
docker run-it--name nginx2--mustela data ubuntu ls/home/mustela的卷
结果:
hello.1 hello.2 hello.3 hello.4
难道你不能简单地将卷从旧数据容器装载到新数据容器上,从而避免将数据转储到主机上吗?@MykolaGurov我正在这样做,但当我重建数据容器时,我需要删除它并再次创建它以获得新代码。但是其他容器看不到这些变化,除非我删除然后重新创建,这意味着如果其中仍然有代码,就没有真正的数据容器。如果将“数据容器”拆分为真正的数据容器(其目的是承载数据卷)和其余部分(站点的源等),则裸数据容器可以在重建过程中存活。根据@MykolaGurov的说法,我刚刚用更多信息更新了这个问题
docker rm mustela-data
docker build -t="mustela/data" .
docker run --name mustela-data mustela/data