Docker通过多种技术实现资源隔离:
一、命名空间(Namespaces)
- 进程命名空间(PID Namespace)
- 功能
- 进程命名空间用于隔离进程ID。在Docker容器内部,每个容器都有自己独立的进程空间,容器内的进程从1开始编号,就像在一个独立的操作系统中一样。
- 示例
- 在主机系统中,进程ID是全局唯一的,但在Docker容器内,相同的进程ID可以被不同容器复用。例如,容器A中的进程1和容器B中的进程1是完全独立的,它们在各自的进程命名空间中运行,互不干扰。
- 功能
- 网络命名空间(Net Namespace)
- 功能
- 网络命名空间为容器提供独立的网络环境。每个容器可以有自己的网络接口、IP地址、路由表和防火墙规则等。
- 示例
- 当创建一个Docker容器时,可以为其指定特定的网络模式,如桥接模式(
--net=bridge
)。在桥接模式下,容器连接到Docker主机创建的虚拟网桥(如docker0
)上,容器会被分配一个与主机网络不同的IP地址,并且可以通过网络命名空间中的网络配置与其他容器或外部网络进行通信。
- 当创建一个Docker容器时,可以为其指定特定的网络模式,如桥接模式(
- 功能
- 挂载命名空间(Mount Namespace)
- 功能
- 挂载命名空间用于隔离文件系统挂载点。容器可以有自己独立的文件系统视图,它可以挂载主机文件系统的特定部分或者使用自己的存储卷(Volumes)。
- 示例 <
- 功能