解决K8S镜像导入和导出问题

   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 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值