在docker的上下文中,我了解图像的哪些层以及最上面的可写层是什么。如果我运行没有任何-v参数的docker容器,是否会创建任何卷?如果我指定了一个卷(这不是挂载到主机中的某个位置)卷是否会成为此容器的可写层?
答案 0 :(得分:3)
卷和图像层是Docker中的单独概念。对于您的第一个问题否,如果没有使用-v
,则不会创建任何卷(暂时忽略Dockerfile
格式具有VOLUME
动词的事实)。
如果指定由任何卷驱动程序提供的卷(默认为将绑定装入容器文件系统中的目标位置的本地目录),则此卷与图像层无关,包括“可写” '由Docker引擎中使用的后端存储驱动程序提供的最顶层。
具体来说,正在使用的存储驱动程序控制层堆栈和顶层“r / w”层的管理方式。例如,overlay或devicemapper或btrfs驱动程序处理图像层的安装以及创建和管理顶层。
通过将文件绑定到文件系统映像中的现有(或创建)路径,可以实现卷之外的操作。退出容器时,这些卷将保留在其源位置(例如,对于/var/lib/docker/volumes/<name>
中的本地/默认卷驱动程序),并且在使用的存储驱动程序的管理下,未安装的层堆栈将具有已修改的卷图层堆栈的“上层”,除非您在退出时移除了容器(--rm
)。这是两个单独管理的概念,而卷系统与存储后端驱动程序没有相互作用。
答案 1 :(得分:1)
如果我运行没有任何-v参数的docker容器,是否会创建任何卷?
-v不是用于创建音量,只是用于将数据从和安装到
-v [host_path]:[container_path],
此处 host_path ,您要将数据输出到的服务器目录路径
container_path ,容器目录路径安装日期自
如果我指定了一个卷(不是挂载到主机中的某个位置)卷是否会成为此容器的可写层?
当主机中不存在路径时。但是你已将它安装到容器上,这里有两种情况。
案例1:如果您希望将某些配置文件从您的计算机挂载到容器,如果容器在运行时期望该文件,那么它会在日志中引发错误
案例2:如果要将卷从容器装入主机。当cotainer开始运行时,它会在主机中创建一个文件夹,并将数据写入主机安装目录。