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