为什么Docker 在创建容器时会通过文件系统的联合挂载技术来创建一个分层的文件系统?底层原理是什么?

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 为什么Docker 在创建容器时会通过文件系统的联合挂载技术来创建一个分层的文件系统?底层原理是什么?

Docker 在创建容器时使用文件系统的联合挂载技术来创建一个分层的文件系统,主要是为了实现容器之间的文件系统隔离和共享。

具体来说,Docker 使用了 Linux 内核的 Cgroups 和 Namespace 功能来实现容器的隔离和资源控制,其中 Namespace 功能可以实现对文件系统的隔离。在 Docker 中,每个容器都拥有自己独立的文件系统,容器内部的应用程序只能访问到其自身的文件系统,无法访问其他容器或宿主机的文件系统。

Docker 使用了文件系统的联合挂载技术来创建分层的文件系统,这样就可以在容器之间共享文件系统的某些部分,减少存储空间的占用。具体来说,Docker 会在宿主机上创建一个可读写的容器层,容器启动时再在容器层上添加一个只读的镜像层,这样就可以实现容器之间的文件系统隔离和共享。

此外,Docker 还使用了 Copy-on-Write(COW)技术,即只有在容器需要修改镜像层的文件时才会进行复制和修改,从而减少了存储空间的占用和文件系统的复制时间。

总之,Docker 使用文件系统的联合挂载技术、Namespace 功能和 COW 技术来实现容器之间的文件系统隔离和共享,从而达到隔离应用程序和共享资源的目的。

相关文章
|
6天前
|
前端开发 安全 数据库
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
|
3天前
|
NoSQL Redis Docker
使用 Docker Compose 接管现有容器的文档
使用 Docker Compose 接管现有容器的文档
16 2
|
6天前
|
Cloud Native 安全 Docker
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
|
3天前
|
存储 关系型数据库 MySQL
解读 MySQL 容器信息:`docker inspect` 字段详解
解读 MySQL 容器信息:`docker inspect` 字段详解
22 1
|
4天前
|
网络协议 Linux Docker
宿主机的容器是如何通过docker0通信的?
宿主机的容器是如何通过docker0通信的?
|
6天前
|
网络协议 Linux Shell
【权限提升】Linux系统&Docker挂载&Rsync未授权&Sudo-CVE&Polkit-CVE
【权限提升】Linux系统&Docker挂载&Rsync未授权&Sudo-CVE&Polkit-CVE
|
9天前
|
NoSQL 关系型数据库 Redis
Docker的通俗理解和通过宿主机端口访问Redis容器的实例
本文目标:引导初学者入门Docker,理解镜像、容器和宿主机概念,学习常用Docker命令,特别是如何创建并从Redis容器通过宿主机端口访问。 关键点: - Docker核心:镜像(类)、容器(实例)、宿主机(运行环境)。 - `docker pull` 拉取镜像,如 `redis:3.0`。 - `docker run -d --name` 后台运行容器,如 `my-redis`。 - `-p` 参数做端口映射,如 `6379:6379`。 - `docker exec -it` 交互式进入容器,如 `bash` 或执行命令。
|
6天前
|
Linux Docker 容器
蓝易云 - net.ipv4.ip_forward=0导致docker容器无法与外部通信
完成以上步骤后,Docker容器应该能够正常与外部通信了。
10 2
|
6天前
|
Docker 容器
蓝易云 - Docker中容器的随机命名方式
例如,一个自动生成的容器名称可能是"happy_einstein"。这种随机命名方式既保证了容器名称的唯一性,又增加了一些趣味性。
12 2
|
9天前
|
监控 Java 数据安全/隐私保护
性能监控之 JMX 监控 Docker 容器中的 Java 应用
【6月更文挑战9天】性能监控之 JMX 监控 Docker 容器中的 Java 应用
37 1