Henry
发布于 2024-01-19 / 263 阅读
0
0

Containerd Pull and Push

背景简介

Containerd 镜像拉取和推送。

环境配置

  1. 系统:Debian 6.1.66-1 (2023-12-09) x86_64 GNU/Linux
  2. Containerd:  v1.6.27

详细步骤

拉取镜像

指令:ctr image pull 

sudo ctr image pull --all-platforms docker.io/library/nginx:latest

指定 --all-platforms 确保 push时不会有报错一出现,也可以在push时指定 --paltform参数避免。

标记镜像

指令:ctr image tag ,使用此指令将镜像标记为私有镜像并推送至私有服务器。

myserver@peag-k8s-master:~$ sudo ctr image tag docker.io/library/nginx:latest repo.private.com/nginx:latest
repo.private.com/nginx:latest

推送镜像

指令:ctr image push,使用此指令将镜像推送至镜像仓库

myserver@peag-k8s-master:~$ sudo ctr image push --plain-http --platform linux/amd64  repo.private.com/nginx:latest --user myusername
Password: 

Note: 添加 --plain-http 是为了防止报错二出现。

报错&解决方案

报错一:digest not found

错误信息:

ctr: content digest sha256:62329614c546f7153a87f2bef833facf6df810194d4a05b7e6c1d376b7bb48a7: not found

解决方案一:在 pull 时指定 --all-platforms 参数 

sudo ctr image pull --all-platforms docker.io/library/nginx:latest

解决方案二:在push时指定 --platform 参数

sudo ctr image push --platform linux/amd64 

Note: platform 参数值可使用 ctr image ls 来查看

myserver@peag-k8s-master:~$ sudo ctr image ls
repo.private.com/alpine:1.0.0                                                application/vnd.docker.distribution.manifest.v2+json sha256:13b7e62e8df80264dbb747995705a986aa530415763a6c58f84a3ca8af9a5bcd 3.3 MiB   linux/amd64

报错二 http: server gave HTTP response to HTTPS client

报错信息:

ctr: failed to do request: Head "https://192.168.122.1:20716/v2/nginx/blobs/sha256:37f9c06a0cd7d7e74ac18a2337ed3bfc9dff15d1e66cc9fb5c16011bb216ac9a": http: server gave HTTP response to HTTPS client

解决方案一:推送时添加 --plain-http 参数

myserver@peag-k8s-master:~$ sudo ctr i push --plain-http --platform linux/amd64 192.168.122.1:20716/nginx:latest --user myusername
Password: 

评论