容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”。
对于 Docker 等大多数 Linux 容器来说,Cgroups 技术是用来制造约束的主要手段,而Namespace 技术则是用来修改进程视图的主要方法。
1.Namespace 机制
假设你已经有了一个 Linux 操作系统上的 Docker 项目在运行,比如我的环境是 Centos 7 和 Docker CE 18.05。
1.首先创建一个容器,并运行
docker run -it busybox /bin/sh
- -it 参数告诉了 Docker 项目在启动容器后,需要给我们分配一个文本输入 / 输出环境,也就是 TTY,跟容器的标准输入相关联,这样我们就可以和这个 Docker 容器进行交互了。
- /bin/sh 就是我们要在 Docker 容器里运行的程序
上面的指令的意思是:
请帮我启动一个容器,在容器里执行 /bin/sh,并且给我分配一个命令行终端跟这个容器交互;这样,我的 Centos 7 机器就变成了一个宿主机,而一个运行着 /bin/sh 的容器,就跑在了这个宿主机里面
如果我们在容器里执行一下ps,会发现
PID