containerd替换docker过程分享
一 背景介绍
1.1 docker和containerd差异总结
a.docker 由 docker-cli ,docker daemon,containerd(containerd-shim),runc(libcontainer) 组成,所以 containerd 是 docker 的基础组件之一
注:containerd是docker1.10以后解耦出来,用于独立控制容器生命周期的模块
b、从 k8s 的角度看,可以选择 containerd 或 docker 作为运行时组件:其中 containerd 调用链更短,组件更少,更稳定,占用节点资源更少。所以 k8s 后来的版本开始默认使用 containerd
c、containerd 相比于 docker , 多了 namespace 概念,每个 image 和 container 都会在各自的 namespace 下可见
总结:containerd 相比于 docker更加专注于控制容器生命周期,但与此同时containerd会缺失原有docker高级功能,如网络控制即无法进行端口映射、数据拷贝
1.2 docker和containerd接口对比
Docker和containerd命令对比
命令 | containerd | Docker | |
crictl(kubernetes环境推荐) | ctr | docker | |
查看容器列表 | crictl ps | ctr -n k8s.io c ls | docker ps |
查看容器详情 | crictl inspect <container> | ||