2017-10-10 126 views
0

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

回答

1

在Docker中,卷和图像层是不同的概念。对于您的第一个问题,,如果没有使用-v(暂时忽略Dockerfile格式确实有VOLUME动词),则不会创建卷。

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

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

通过将卷绑定到文件系统映像中的现有(或创建)路径,卷在此之外发挥作用。当您退出容器时,这些卷将保留在它们的源位置(例如,对于本地/默认卷驱动器,位于/var/lib/docker/volumes/<name>中),并且在所使用的存储驱动程序的管理下,卸载的堆栈将具有修改的“上层”除非您在退出时取下容器(--rm)。这是两个独立管理的概念,音量系统与存储后端驱动程序没有相互影响。

+0

谢谢。帮助很多 –

0

如果我运行docker容器没有任何-v参数会创建任何卷?

-v不是用于创建卷,只是为了从和安装数据

-v [host_path]:[container_path],

这里host_path ,你的服务器目录路径你想要的数据到

con tainer_path,容器目录路径挂载

如果我指定音量(这不是一个安装于主机的某个位置)日期确实体积成为这个容器的写层?

当路径在主机中不存在时。但是你已经将它装入容器,这里有两种情况。

案例1:如果你想从你的机器一些配置文件安装到容器如果容器预期该文件运行时,则在日志中抛出错误

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

相关问题