docker - Docker 中的容器层和卷有什么区别?

原文 标签 docker containers docker-volume ufs

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

最佳答案

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

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

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

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

关于docker - Docker 中的容器层和卷有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46676119/

相关文章:

docker - 使用多个FROM语句缩短Dockerfile的构建时间

linux - Docker守护程序已启动接缝,但未在运行的进程中列出

sql-server - 无法从 Docker 容器连接到外部 SQL Server

html - div 标签和标题

docker - 如何向 OpenShift/Kubernetes 部署提供环境信息(如外部服务 URL 或密码)?

docker - Docker群是否会忽略Dockerfile中的VOLUME命令?

docker - 为什么Dockerfile可以构建但无法正常运行,即使它可以手动运行?

java - Docker PostgreSQL中的连接被拒绝

html - 带有侧边栏和内容的主容器

Windows卷上的docker-compose无法正常工作