仅采用典型数据Docker容器:
FROM stackbrew/busybox:latest
RUN mkdir /data
VOLUME /data
Run Code Online (Sandbox Code Playgroud)
现在我看到很多像这样运行的:
docker run -name my-data data true
该true命令在运行后立即退出,容器也是如此.但令人惊讶的是,当您将其与另一个容器连接时,它会继续为该卷提供服务--volumes-from my-data.
我的问题是,这是如何工作的?停止的容器如何仍允许访问其卷?
cre*_*ack 35
docker中的卷不是顶级的东西.它们"简单地"是容器元数据的一部分.
当您VOLUME在dockerfile中或启动容器时-v,Docker将/var/lib/docker/volumes使用随机ID 在*中创建一个目录(这与创建图像的过程完全相同,commit除非它是空的)并将该随机ID添加到容器的元数据中.
当容器启动时,Docker将/var/lib/docker/volumes/在该卷的给定位置挂载绑定目录*.
当您使用时volumes-from,Docker将只查找其他容器中的卷id和位置,运行与否,并在目标位置挂载绑定目录.
卷不与运行时链接,它只是挂载的目录.
*对于较新的版本,Docker现在使用vfs驱动程序进行存储,/var/lib/docker/volumes/仅用于大小,创建时间等元数据.实际数据存储在/var/lib/docker/vfs/dir/<volume id>
| 归档时间: |
|
| 查看次数: |
4492 次 |
| 最近记录: |