docker_practice/security/kernel_ns.md
Kang Huaishuai ea00e0d82a
Update format
Signed-off-by: Kang Huaishuai <khs1994@khs1994.com>
2021-03-07 15:29:05 +08:00

17 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 内核命名空间
Docker 容器和 LXC 容器很相似所提供的安全特性也差不多当用 `docker run` 启动一个容器时在后台 Docker 为容器创建了一个独立的命名空间和控制组集合
命名空间提供了最基础也是最直接的隔离在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用
每个容器都有自己独有的网络栈意味着它们不能访问其他容器的 sockets 或接口不过如果主机系统上做了相应的设置容器可以像跟主机交互一样的和其他容器交互当指定公共端口或使用 links 来连接 2 个容器时容器就可以相互通信了可以根据配置来限制通信的策略
从网络架构的角度来看所有的容器通过本地主机的网桥接口相互通信就像物理机器通过物理交换机通信一样
那么内核中实现命名空间和私有网络的代码是否足够成熟
内核命名空间从 2.6.15 版本2008 7 月发布之后被引入数年间这些机制的可靠性在诸多大型生产系统中被实践验证
实际上命名空间的想法和设计提出的时间要更早最初是为了在内核中引入一种机制来实现 [OpenVZ](https://en.wikipedia.org/wiki/OpenVZ) 的特性。
OpenVZ 项目早在 2005 年就发布了其设计和实现都已经十分成熟