自Kubernetes 1.24版本开始不在支持Docker,其实问题并没有那么大。Kubernetes只是不再直接支持docker-shim垫片,而是使用直接对接Docker中的ContainerD。 Docker从很早就开始剥离containerd以及runc组件,使之可以更好的融入开源社区。本篇文章将介绍containerd的一些基本使用命令。
ContainerD生态圈
配置管理
# 生成配置文件
sudo containerd config default > /etc/containerd/config.toml
# 查看版本
sudo ctr version
# 启动服务
sudo systemctl start containerd
# 停止服务
sudo systemctl stop containerd
# 重启服务
sudo systemctl restart containerd
镜像管理
# 查看镜像
sudo ctr images ls
# 下载镜像
sudo ctr images pull --all-platforms docker.io/library/nginx:alpine
# 镜像删除
sudo ctr images rm docker.io/library/nginx:alpine
# 挂载镜像
sudo ctr images mount docker.io/library/nginx:alpine /mnt
# 卸载镜像
sudo umount /mnt
# 镜像导出
sudo ctr images export --all-platforms nginx.img docker.io/library/nginx:alpine
# 镜像导入
sudo ctr images import nginx.img
# 修改tag
sudo ctr images tag docker.io/library/nginx:alpine nginx:alpine
# check
sudo ctr image check
容器管理
# 查看容器
sudo ctr containers ls
# 查看任务, 可区分出动态容器
sudo ctr task ls
# 创建静态容器
sudo ctr containers create docker.io/library/nginx:alpine nginx1
# 查看容器信息
sudo ctr containers info nginx1
# 启动静态容器为动态容器
sudo ctr task start -d nginx1
# 查看容器内的进程
sudo ctr t ps nginx1
# 进入容器
sudo ctr t exec --exec-id $RANDOM -t nginx1 /bin/sh
# 创建动态容器, 其中--net-host是指host网络
sudo ctr run -d --net-host docker.io/library/nginx:alpine nginx1
# 暂停任务
sudo ctr t pause nginx1
# 恢复任务
sudo ctr t resume nginx1
# 停止任务
sudo ctr t kill nginx1
# 删除任务
sudo ctr t rm nginx1
# 删除容器
sudo ctr c rm nginx1
镜像仓库
配置镜像仓库主机名
vi /etc/hosts
192.168.0.165 harbor.stanleylog.com
修改ContainerD配置文件
vi /etc/containerd/config.toml
[plugins.cri.registry.mirrors."harbor.stanleylog.com"]
endpoint = [
"http://harbor.stanleylog.com"
]
# 重启containerd
sudo systemctl restart containerd
操作命令
# 修改镜像名
sudo ctr i tag docker.io/library/nginx:alpine harbor.stanleylog.com/library/nginx:alpine
# 上传镜像
sudo ctr i push --platform linux/amd64 --plain-http -u admin:Harbor12345 harbor.stanleylog.com/library/nginx:alpine
# 下载镜像
sudo ctr i pull --plain-http harbor.stanleylog.com/library/nginx:alpine
命名空间
# 创建命名空间
sudo ctr namespace create kubemsb
# 删除命名空间
sudo ctr ns remove kubemsb
# 命名空间的使用
sudo ctr -n default i ls
sudo ctr -n default c create docker.io/library/nginx:alpine