跨容器共享和更新docker数据容器

跨容器共享和更新docker数据容器,docker,containers,Docker,Containers,我有以下容器: 从github repo直接在quay.io中构建的数据容器基本上是一个网站 FPM集装箱 NGINX容器 他们三个连在一起,工作得很好。但问题是,每次我在网站(数据容器)中更改某些内容时,它都会被重建(当然),我必须删除该容器以及FPM和NGINX,然后重新创建它们,以便能够读取新内容 我从“备份方法”开始,将数据从容器复制到主机目录,并将其装载到FPM和NGINX容器中,这样我就可以更新数据,而无需重新启动/删除任何服务 但是将数据从数据容器移动到主机的想法,真的不喜欢我

我有以下容器:

  • 从github repo直接在quay.io中构建的数据容器基本上是一个网站
  • FPM集装箱
  • NGINX容器
他们三个连在一起,工作得很好。但问题是,每次我在网站(数据容器)中更改某些内容时,它都会被重建(当然),我必须删除该容器以及FPM和NGINX,然后重新创建它们,以便能够读取新内容

我从“备份方法”开始,将数据从容器复制到主机目录,并将其装载到FPM和NGINX容器中,这样我就可以更新数据,而无需重新启动/删除任何服务

但是将数据从数据容器移动到主机的想法,真的不喜欢我。所以想知道是否有一个“码头工人的方式”或更好的方式做这件事

谢谢

更新:添加更多上下文

Dockerfile d`ata容器定义

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
如果运行容器中的I
ls/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