2016-08-01 56 views
0

我有一个图像(不是容器),其中有数据在/ store存放。该图像没有做任何其他的事情,它只是一个容纳数据的容器。我想创建一个docker-compose文件,这样我的nginx容器就可以访问/ store中的所有/ usr/share/nginx/html如何从图像创建数据量用于nginx容器

我需要先制作一个中间容器吗?我不确定docker-compose文件的外观。谢谢

回答

1

管理这个最好的方法可能会使用泊坞窗来存储你/存储数据。 您可以通过从该映像创建容器来完成一次,在其中装入一个空的泊坞窗卷,然后复制外部泊坞窗卷中的/ store的内容。

如果您仍然需要使用现有映像中的/ store,则需要从if创建一个容器并从nginx容器中检索暴露的卷。 (使用volume_from)。在这种情况下,两个容器都需要位于同一主机上。

+0

谢谢,但我该如何指定/ store应该挂载在/ usr/share/nginx/html的nginx容器中? – Zuriar

+0

如果你确实需要从图像中读取数据(而不是从外部存储的docker卷),并且如果需要保留不同的路径,则可以在容器中挂载/存储并创建/ usr/share的符号链接/ nginx/html在启动时存储在你的nginx容器中 –

0

我建议你考虑烤/store你的nginx的容器内。它将减少安装体积的数量,从而简化整体结构。也许可以提高性能。

你能做到这一点在几个方面:

  1. 使用你的数据图像作为基地,为你的nginx的图像。在这种情况下,您需要为nginx编写Dockerfile,但这并不困难。

  2. 您可以通过true端点和docker cp所需的数据创建容器提取数据图像/store。然后将其复制到您的nginx图像。

2

这是一个快速步骤:

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标志运行装载它的任何一侧容器。

+0

不是对你的答案发表评论,而仅仅是对Docker卷的总体介绍......第一个和第二个命令之间的行为差​​异使我呕吐。如果我*表示使用空卷,该怎么办?我希望在第一个命令的容器内看到一个空的'/ store',真的。 – gertvdijk