Docker 容器隔离的原理 | 学习

当我们使用Docker时,想要进入容器就会使用下面的命令:

$ docker run -it busybox /bash/sh
  • -it参数表示需要Dokcer项目给我们分配一个文本输入/输出的环境;
  • /bash/sh即我们需要在Docker容器中要运行的程序。

进入容器后,通过查看进程可以发现

/ # ps
PID  USER   TIME COMMAND
  1 root   0:00 /bin/sh
  10 root   0:00 ps

在Docker的容器里面第一个进程就是/bin/sh,而第二个进程也是我们刚刚运行的进程ps,这就像是在Docker容器中有了隔离,,一个完全不同的世界。

原理解释

当我们在宿主机上运行一个/bin/sh程序的时候,操作系统都会给它分配一个进程编号,PID=10.这个编号就是进程的唯一编号。而我们通过Docker把这个程序运行在容器之中的时候,Docker就会将进行隔离,理解为程序自己认为只有自己一个进程,无法查看其他的进程。

这种隔离其实就是对隔离的应用的进程空间做了手脚,使得这些进程只能看到重新计算过的进程编号。这个技术就是Linux里面的Namespace机制。
产生PID 的clone方法:

i
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值