4

在 docker 的上下文中,我了解图像的哪些层是什么以及最上面的可写层是什么。如果我在没有任何 -v 参数的情况下运行 docker 容器,是否会创建任何卷?如果我确实指定了一个卷(不是挂载到主机中的某个位置),该卷是否会成为该容器的可写层?

4

2 回答 2

8

卷和镜像层在 Docker 中是独立的概念。对于您的第一个问题,,不使用任何卷都不会创建(暂时忽略格式确实有动词-v的事实)。DockerfileVOLUME

如果您指定由任何卷驱动程序提供的卷(默认为本地目录,它将绑定挂载到容器文件系统中的目标位置),则该卷与映像层无关,包括“可写”最顶层由 Docker 引擎中使用的后端存储驱动程序提供。

具体来说,使用中的存储驱动程序控制层堆栈的方式,以及管理顶层“r/w”层的方式。例如,overlay 或 devicemapper 或 btrfs 驱动程序处理图像层的安装以及创建和管理顶层。

通过绑定安装到文件系统映像中的现有(或创建)路径,卷在此之外发挥作用。当您退出容器时,这些卷将保留在其源位置(例如,对于本地/默认卷驱动程序,/var/lib/docker/volumes/<name>在层堆栈,除非您在退出 ( --rm) 时移除了容器。这是两个单独管理的概念,卷系统与存储后端驱动程序没有相互作用。

于 2017-10-11T20:18:03.150 回答
1

卷用于在容器和主机之间挂载数据

如果我在没有任何 -v 参数的情况下运行 docker 容器,是否会创建任何卷?

-v 不是用于创建卷,只是将数据装入装入

-v [host_path]:[container_path],

这里host_path,您要将数据输出到的服务器目录路径

container_path,容器目录路径挂载日期从

如果我确实指定了一个卷(不是挂载到主机中的某个位置),该卷是否会成为该容器的可写层?

当主机中不存在路径时。但是您已将其安装到容器中,这里有两种情况。

案例1:如果你想将一些配置文件从你的机器挂载到容器,如果容器在运行时需要那个文件,那么它会在日志中抛出错误

案例 2:如果要将卷从容器安装到主机。当 cotainer 开始运行时,它会在主机中创建一个文件夹并将数据写入主机安装目录。

于 2017-10-17T19:22:59.800 回答