Podman -push - 将本地存储中的镜像、清单列表或镜像索引推送到其他位置
概要
podman push [options] image [destination]
podman image push [options] image [destination]
描述
将本地存储中的镜像、清单列表或镜像索引推送到指定的目标位置。
镜像存储
镜像从本地镜像存储中推送。
目标位置
目标位置(DESTINATION)是容器镜像被推送到的地方。它支持 containers-transports(5)
中定义的所有传输方式。如果没有指定传输方式,则使用 docker
(即容器注册表)传输方式。对于远程客户端,包括 Mac 和 Windows(不包括 WSL2)机器,docker
是唯一支持的传输方式。
示例:
# 推送到容器注册表
$ podman push quay.io/podman/stable
# 通过 docker 传输方式推送到容器注册表
$ podman push docker://quay.io/podman/stable
# 推送到容器注册表并使用另一个标签
$ podman push myimage quay.io/username/myimage
# 推送到本地目录
$ podman push myimage dir:/tmp/myimage
# 推送到 docker-archive 格式的 tar 包
$ podman push myimage docker-archive:/tmp/myimage
# 推送到本地的 docker 守护进程
$ sudo podman push myimage docker-daemon:docker.io/library/myimage:33
# 推送到 OCI 格式的 tar 包
$ podman push myimage oci-archive:/tmp/myimage
在使用 podman push
命令时,可以指定一些选项来调整推送行为。具体的选项可以通过 podman push --help
来查看。
请注意,推送镜像时,目标位置可能需要身份验证。在某些情况下,您可能需要提供用户名和密码或其他凭据才能成功推送镜像。
推送镜像是一个相对耗时的操作,特别是当镜像较大或目标位置较远时。请确保您的网络连接稳定,并耐心等待推送完成。
推送镜像到 Docker 仓库
podman push myimage docker://registry.example.com/myrepo/myimage
推送镜像到本地目录
podman push myimage dir:/path/to/local/directory
使用特定格式推送镜像
podman push --format oci myimage oci-archive:/path/to/output.tar
推送镜像并压缩层
podman push --dir-compress myimage dir:/path/to/output-dir
推送镜像并添加签名
podman push --sign-by mykey myimage docker://registry.example.com/myrepo/myimage
请注意,某些选项可能不适用于所有传输方式或目标位置。使用这些选项时,请确保您理解它们的行为并考虑您正在推送的镜像和目标位置。
在使用 podman push
命令时,请确保您有足够的权限来执行推送操作,并且目标位置是可达的。如果您遇到任何问题或错误消息,请检查您的网络连接、认证凭据以及目标位置的配置。
总结起来,podman push
命令是 Podman 工具中一个非常有用的功能,它允许您将本地存储的镜像推送到不同的目标位置,以满足不同的需求和管理策略。
选项
选项 | 说明 |
---|---|
--authfile | |
--cert-dir | |
--dir-compress | 注意:此标志只能在使用dir传输时设置 |
--compression-format | |
--compression-level | |
--creds | |
--digestfile | |
--disable-content-trust | |
--encrypt-layer=layer(s) | 要加密的层:0索引的层索引,支持负索引(例如,0是第一层,-1是最后一层)。如果未定义,则在指定encryption-key标志时加密所有层。 |
--encryption-key=key | [protocol:keyfile]指定加密协议,可以是JWE(RFC7516)、PGP(RFC4880)和PKCS7(RFC2315)以及图像加密所需的密钥材料。例如,jwe:/path/to/key.pem或pgp:admin@example.com或pkcs7:/path/to/x509-file。 |
--force-compression | |
--format, -f=format | 推送图像时要使用的清单类型(oci、v2s2或v2s1)。 |
--quiet, -q | 写入输出图像时,禁止显示进度输出 |
--remove-signatures | 丢弃图像中的任何预先存在的签名。 |
--retry | |
--retry-delay | |
--sign-by=key | 使用指定的密钥在目标位置添加“简单签名”签名。(此选项不适用于远程Podman客户端,包括Mac和Windows(排除WSL2)机器) |
--sign-by-sigstore=param-file | 根据容器sigstore签名参数文件param-file中指定的其他选项添加sigstore签名。有关文件格式的详细信息,请参阅containers-sigstore-signing-params.yaml(5)。 |
--sign-by-sigstore-private-key=path | 使用指定路径下的私钥在目标位置添加sigstore签名。(此选项不适用于远程Podman客户端,包括Mac和Windows(排除WSL2)机器) |
--sign-passphrase-file | |
--tls-verify |
示例
在本地目录中推送指定的镜像:
podman push imageID dir:/path/to/image
以OCI格式将指定的镜像推送到本地目录:
podman push imageID oci-archive:/path/to/layout:image:tag
将指定的镜像推送到容器仓库:
podman push imageID docker://registry.example.com/repository:tag
将指定的镜像推送到容器仓库,并将摘要保存到指定的文件中:
podman push --digestfile=/tmp/mydigest imageID docker://registry.example.com/repository:tag
将指定的镜像推送到本地Docker守护进程的容器存储中:
podman push imageID docker-daemon:image:tag
使用来自备用authfile路径的凭据,以不同的镜像名称推送指定的镜像:
podman push --authfile temp-auths/myauths.json alpine docker://docker.io/umohnani/alpine
Getting image source signatures
Copying blob sha256:5bef08742407efd622d243692b79ba0055383bbce12900324f75e56f589aedb0
4.03 MB / 4.03 MB [========================================================] 1s
Copying config sha256:ad4686094d8f0186ec8249fc4917b71faa2c1030d7b5a025c29f26e19d95c156
1.41 KB / 1.41 KB [========================================================] 1s
Writing manifest to image destination
Storing signatures
将指定的镜像推送到本地目录作为OCI镜像:
podman push --format oci registry.access.redhat.com/rhel7 dir:rhel7-dir
获取镜像源签名
复制 blob sha256:9cadd93b16ff2a0c51ac967ea2abfadfac50cfa3af8b5bf983d89b8f8647f3e4
71.41 MB / 71.41 MB [======================================================] 9s
复制 blob sha256:4aa565ad8b7a87248163ce7dba1dd3894821aac97e846b932ff6b8ef9a8a508a
1.21 KB / 1.21 KB [========================================================] 0s
复制配置 sha256:f1b09a81455c351eaa484b61aacd048ab613c08e4c5d1da80c4c46301b03cf3b
3.01 KB / 3.01 KB [========================================================] 0s
写入镜像到目标目录的清单
存储签名
另请参阅
- podman(1) - Podman 的主要命令行工具,用于管理容器和镜像。
- podman-pull(1) - 从注册表或其他源拉取镜像。
- podman-login(1) - 与容器注册表进行身份验证。
- containers-certs.d(5) - 容器镜像注册表证书的存储目录文档。
- containers-registries.conf(5) - 容器注册表的配置文件文档。
- containers-transports(5) - 容器镜像可用的传输方法文档。