例如,我在docker-compose文件中定义了此服务和卷
postgres:
image: postgres:9.4
volumes:
- db_data:/var/lib/postgresql/data
volumes:
blue_prod_db:
driver: rancher-nfs
然后。如果您像这样在Dockerfile中定义一个卷:
RUN mkdir /stuff
COPY ./stuff/* /stuff/
VOLUME /stuff
您以后如何通过docker-compose配置访问它并将其添加到容器中?
答案 0 :(得分:0)
在Dockerfile中配置时,卷将导致从该映像启动的任何容器(包括在RUN
命令的构建过程中稍后使用的临时容器)在指定位置定义一个卷,例如/东西。如果您在运行时未为该卷定义源,则将在该位置获得docker为您创建的匿名卷。但是,始终可以在运行时通过指定撰写文件中的位置来定义带有源的卷(即使未定义卷):
version: "3"
services:
app:
image: your_image
volumes:
- data:/stuff
volumes:
data:
请注意,有两个卷部分,一个用于特定服务,用于指定将卷安装在容器中的位置,另一个用于顶层,您可以在其中指定卷的来源。不指定源,您将获得一个本地卷驱动程序,该目录下的目录位于/ var / lib / docker bind下,并安装在容器中。
我一般不建议在Dockerfile中指定卷,它会破坏在以后的步骤中为子映像扩展映像的能力,并会因匿名卷而使文件系统混乱,这些卷不易追溯其来源。最好在运行时使用诸如compose文件之类的东西来定义它们。