如何从图像创建数据量用于nginx容器
我有一个图像(不是容器),其中有数据在/ store存放。该图像没有做任何其他的事情,它只是一个容纳数据的容器。我想创建一个docker-compose文件,这样我的nginx容器就可以访问/ store中的所有/ usr/share/nginx/html如何从图像创建数据量用于nginx容器
我需要先制作一个中间容器吗?我不确定docker-compose文件的外观。谢谢
管理这个最好的方法可能会使用泊坞窗来存储你/存储数据。 您可以通过从该映像创建容器来完成一次,在其中装入一个空的泊坞窗卷,然后复制外部泊坞窗卷中的/ store的内容。
如果您仍然需要使用现有映像中的/ store,则需要从if创建一个容器并从nginx容器中检索暴露的卷。 (使用volume_from)。在这种情况下,两个容器都需要位于同一主机上。
你可以尝试使用local-persist volume plugin如下:
version: '2'
services:
web:
image: nginx
volumes:
- data:/usr/share/nginx/html
volumes:
data:
driver: local-persist
driver_opts:
mountpoint: /data/local-persist/data
显然其他卷类型的插件可能会提供更多的灵活性。
我建议你考虑烤/store
你的nginx的容器内。它将减少安装体积的数量,从而简化整体结构。也许可以提高性能。
你能做到这一点在几个方面:
使用你的数据图像作为基地,为你的nginx的图像。在这种情况下,您需要为nginx编写Dockerfile,但这并不困难。
您可以通过
true
端点和docker cp
所需的数据创建容器提取数据图像/store
。然后将其复制到您的nginx图像。
这是一个快速步骤:
docker run -v nginx-store:/store --rm store true
docker run -v nginx-store:/usr/share/nginx/html -d --name nginx nginx
第一次运行从store
图像的内容(这种情况你挂载空卷的任何时间在一个容器)创建了一个名为量nginx-store
,并立即退出并删除该容器。
第二次运行在将来的nginx容器中使用该命名卷。若要修改将来的卷,请使用类似的-v nginx-store:/target
标志运行装载它的任何一侧容器。
不是对你的答案发表评论,而仅仅是对Docker卷的总体介绍......第一个和第二个命令之间的行为差异使我呕吐。如果我*表示使用空卷,该怎么办?我希望在第一个命令的容器内看到一个空的'/ store',真的。 – gertvdijk
谢谢,但我该如何指定/ store应该挂载在/ usr/share/nginx/html的nginx容器中? – Zuriar
如果你确实需要从图像中读取数据(而不是从外部存储的docker卷),并且如果需要保留不同的路径,则可以在容器中挂载/存储并创建/ usr/share的符号链接/ nginx/html在启动时存储在你的nginx容器中 –