我正在看这个答案https://stackoverflow.com/a/32916890/271388而我并不完全明白那里发生了什么。
如果我理解正确,在docker卷中是从主机文件系统到容器文件系统的映射。而docker的--volumes-from flag以及docker-compose.yml中的docker-compose的volumes_from
指令将这些映射从一个容器复制到另一个容器。
但那回答是怎么回事? docker-compose.yml中没有提到任何卷。以下是什么?
volumes_from:
- DatabaseData
答案 0 :(得分:1)
docker镜像可以拥有自己的卷,这些卷在创建容器时未定义(例如,使用-v
参数docker run
),但是当构建的图像。这就是Dockerfile中VOLUME
语句的用途。
另请参阅relevant section of the documentation:
VOLUME指令创建具有指定名称的安装点,并将其标记为从本机主机或其他容器保存外部安装的卷。该值可以是JSON数组
VOLUME ["/var/log/"]
,也可以是包含多个参数的纯字符串,例如VOLUME /var/log
或VOLUME /var/log /var/db
。有关通过Docker客户端提供的更多信息/示例和安装说明,请参阅通过卷文档共享目录。docker run命令使用基本映像中指定位置存在的任何数据初始化新创建的卷。例如,请考虑以下Dockerfile片段:
FROM ubuntu RUN mkdir /myvol RUN echo "hello world" > /myvol/greeting VOLUME /myvol
如果您查看了问题中(间接)引用的Dockerfile of the mysql
image,您会看到/var/lib/mysql
被定义为卷。即使未明确定义,也将使用该卷创建从该图像创建的每个容器。