是否有可能在Docker构build期间通过Dockerfile创build命名卷?

我有多个图像与ruby应用程序。 我想分享安装的gem。 是否有可能创build命名卷与文件夹安装gem? 什么是安排它的正确方法?

我会通过创build一个映像来解决这个问题,我将所有的gem安装/更新为卷。 您将需要在Dockerfile中的gem容器:

VOLUME /PATH/TO/GEMS 

然后使用共享卷将这些gem导入所有其他容器中:

 docker run --volumes-from CONTAINER_WITH_GEMS --name CONTAINER_NAME IMAGE 

多个容器也可以共享一个或多个数据卷。 但是,写入单个共享卷的多个容器可能会导致数据损坏。 如果你可以确保你的应用程序被devise为写入共享数据存储,那么我们可以用其他方法来解决这个问题。

最简洁的答案是不。 在Dockerfile中,您不能指定一个命名卷。

但是,无论docker运行中的参数如何,您都可以将容器文件夹指定为卷创build。 您使用VOLUME指令。

但是,您必须告诉用户将其本地目录映射到卷。 您可以将docker-compose.yml文件分发给用户以简化过程。