背景简介
Containerd 镜像拉取和推送。
环境配置
- 系统:Debian 6.1.66-1 (2023-12-09) x86_64 GNU/Linux
- 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: