k8s 1.24之后使用containerd作为容器引擎, 因历史原因,多个集群有containerd和docker两种容器引擎,需要进行镜像互导
集群 | 节点 | 容器引擎 |
集群1 | node1 | Docker容器引擎 |
集群2 | node2 | Containerd 容器引擎 |
1、镜像导出
在集群1中,使用docker管理工具进行导出
#从集群1中,使用docker save 导出镜像
[root@node1 ~]# docker save -o vc-webook.tar volcanosh/vc-webhook-manager:v1.9.0
2. 镜像导入
在集群2中,下载及安装containerd镜像管理工具nerdctl 。
[root@node2 ~]wget https://github.com/containerd/nerdctl/releases/download/v1.1.0/nerdctl-1.1.0-linux-amd64.tar.gz
[root@node2 ~]tar zxvf nerdctl-1.1.0-linux-amd64.tar.gz
[root@node2 ~]cp nerdctl /usr/bin/
使用nerdctl load导入镜像
#在集群2 使用nertdctl load导入镜像
[root@node2 ~]#nerdctl load -i vc-webook.tar
3. 附nerdctl命令
命令语法和docker类似
#查看k8s镜像
nerdctl images --namespace=k8s.io
nerdctl -n=k8s.io images
#nerdctl run :创建容器
nerdctl run -d -p 80:80 --name=nginx --restart=always nginx
#nerdctl exec :进入容器
nerdctl exec -it nginx /bin/sh
#nerdctl ps :列出容器
nerdctl ps -a
#nerdctl inspect :获取容器的详细信息
nerdctl inspect nginx
#nerdctl logs :获取容器日志
nerdctl logs -f nginx
#nerdctl stop :停止容器
nerdctl stop nginx
#nerdctl rm :删除容器
nerdctl rm -f nginx
nerdctl rmi -f <IMAGE ID>
#nerdctl images:镜像列表
nerdctl images
nerdctl -n=k8s.io images
nerdctl -n=k8s.io images | grep -v '<none>'
#nerdctl pull :拉取镜像
nerdctl pull nginx
#nerdctl tag :镜像标签
nerdctl tag nginx:latest harbor.k8s/image/nginx:latest
#nerdctl push :推送镜像
nerdctl push harbor.k8s/image/nginx:latest
#nerdctl save :导出镜像
nerdctl save -o busybox.tar busybox:latest
#nerdctl load :导入镜像
nerdctl load -i busybox.tar
#nerdctl rmi :删除镜像
nerdctl rmi busybox
#nerdctl build :从Dockerfile构建镜像
nerdctl build -t centos:v1.0 -f centos.dockerfile .