Docker的1.11版本是一个大改变,
首先是从单一模块拆分成了4个独立模块,engine、containerd、runc、containerd-shim
containerd-shim代替了原来的1号进程,用来回收孤儿进程
containerd 用来管理容器的生命周期,
runc 用来运行容器
这种改变在2017年的时候使其更贴合容器标准化
为了安装1.11之前的版本,我尝试了几乎4个小时才成功
主要是apt的安装包几乎都已经离线了
想尝试的同学可以按照以下步骤
下载deb离线包,然后使用 ubuntu16来安装,18和20不能兼容
http://archive.ubuntu.com/ubuntu/pool/universe/d/docker.io/docker.io_1.10.3-0ubuntu6_amd64.deb
启动一个ubuntu镜像,让它的1号进程阻塞,参考 自己动手生成一个僵尸进程
杀死 42号进程,这样45号进程的父进程会变成容器的1号进程
接着杀死 45号进程,此时容器的1号进程应该无法回收它
然后我们就得到了一个无法被回收的僵尸进程