名称¶
podman-push - 将镜像、清单列表或镜像索引从本地存储推送到其他地方
概要¶
podman push [选项] 镜像 [目标]
podman image push [选项] 镜像 [目标]
描述¶
将镜像、清单列表或镜像索引从本地存储推送到指定的目标。
镜像存储¶
镜像从存储在本地镜像存储中的镜像推送到指定的目标。
目标¶
目标是容器镜像被推送到的地方。它支持来自 containers-transports(5)
的所有传输。如果未指定传输,则使用 docker
(即容器注册表)传输。对于远程客户端,包括 Mac 和 Windows(不包括 WSL2)机器,docker
是唯一支持的传输。
# Push to a container registry
$ podman push quay.io/podman/stable
# Push to a container registry via the docker transport
$ podman push docker://quay.io/podman/stable
# Push to a container registry with another tag
$ podman push myimage quay.io/username/myimage
# Push to a local directory
$ podman push myimage dir:/tmp/myimage
# Push to a tarball in the docker-archive format
$ podman push myimage docker-archive:/tmp/myimage
# Push to a local docker daemon
$ sudo podman push myimage docker-daemon:docker.io/library/myimage:33
# Push to a tarball in the OCI format
$ podman push myimage oci-archive:/tmp/myimage
选项¶
--authfile=路径¶
身份验证文件的路径。默认情况下,在 Linux 上为 ${XDG_RUNTIME_DIR}/containers/auth.json
,在 Windows/macOS 上为 $HOME/.config/containers/auth.json
。该文件由 podman login 创建。如果在那里找不到授权状态,则检查 $HOME/.docker/config.json
,它由 docker login 设置。
注意:还可以通过设置 REGISTRY_AUTH_FILE
环境变量来覆盖身份验证文件的默认路径。这可以通过 export REGISTRY_AUTH_FILE=路径 来完成。
--cert-dir=路径¶
使用 路径 (*.crt, *.cert, *.key) 中的证书连接到注册表。(默认:/etc/containers/certs.d)有关详细信息,请参见 containers-certs.d(5)。(此选项不可用于远程 Podman 客户端,包括 Mac 和 Windows(不包括 WSL2)机器)
--compress¶
在使用 ‘dir’ 传输将镜像推送到目录时压缩 tarball 镜像层。(默认与源相同的压缩类型,压缩或未压缩)
注意:此标志只能在使用 dir 传输时设置
--compression-format=gzip | zstd | zstd:chunked¶
指定要使用的压缩格式。支持的值为:gzip
、zstd
和 zstd:chunked
。默认情况下为 gzip
,除非在 containers.conf 文件中被覆盖。zstd:chunked
与加密镜像不兼容,在这种情况下将被视为 zstd
并发出警告。
--compression-level=级别¶
指定要使用的压缩级别。该值特定于所使用的压缩算法,例如,对于 zstd,接受的值在 1-20(包括)范围内,默认值为 3,而对于 gzip,它为 1-9(包括),默认值为 5。
--creds=[用户名[:密码]]¶
用于对注册表进行身份验证的 [用户名[:密码]],如果需要。如果一个或两个值都没有提供,则会出现命令行提示,并且可以输入该值。密码在输入时不会回显。
注意,指定的凭据仅用于对目标注册表进行身份验证。它们不用于镜像或注册表被重写时(参见 containers-registries.conf(5)
);要对这些进行身份验证,请考虑使用 containers-auth.json(5)
文件。
--digestfile=摘要文件¶
复制镜像后,将生成的镜像的摘要写入文件。
--disable-content-trust¶
这是一个 Docker 特定的选项,用于禁用对容器注册表的镜像验证,Podman 不支持此选项。此选项是一个 NOOP,仅为了脚本兼容性而提供。
--encrypt-layer=层(s)¶
要加密的层(s):0 索引的层索引,支持负索引(例如,0 是第一层,-1 是最后一层)。如果没有定义,则如果指定了 encryption-key 标志,则加密所有层。
--encryption-key=密钥¶
[协议:密钥文件] 指定加密协议,可以是 JWE (RFC7516)、PGP (RFC4880) 和 PKCS7 (RFC2315),以及镜像加密所需的密钥材料。例如,jwe:/path/to/key.pem 或 pgp:[email protected] 或 pkcs7:/path/to/x509-file。
--force-compression¶
如果设置,即使目标包含一个不同压缩的变体,push 也会使用指定的压缩算法。如果在命令行上显式指定了 --compression-format
,则默认为 true
,否则默认为 false
。
--format, -f=格式¶
推送镜像时使用的清单类型(oci、v2s2 或 v2s1)。
--quiet, -q¶
写入输出镜像时,抑制进度输出
--remove-signatures¶
丢弃镜像中任何预先存在的签名。
--retry=尝试次数¶
在注册表和本地存储之间拉取或推送镜像失败时重试的次数。默认值为 3。
--retry-delay=持续时间¶
在注册表和本地存储之间拉取或推送镜像失败时,重试尝试之间的延迟持续时间。默认值为从两秒开始,然后指数级退避。如果设置了此值,则使用该延迟,并且不会发生指数级退避。
--sign-by=密钥¶
使用指定的密钥在目标上添加“简单签名”签名。(此选项不可用于远程 Podman 客户端,包括 Mac 和 Windows(不包括 WSL2)机器)
--sign-by-sigstore=参数文件¶
根据容器的 sigstore 签名参数文件 参数文件 中指定的进一步选项,添加 sigstore 签名。有关文件格式的详细信息,请参见 containers-sigstore-signing-params.yaml(5)。
--sign-by-sigstore-private-key=路径¶
使用指定路径上的私钥在目标上添加 sigstore 签名。(此选项不可用于远程 Podman 客户端,包括 Mac 和 Windows(不包括 WSL2)机器)
--sign-passphrase-file=路径¶
如果对镜像进行签名(使用 --sign-by 或 --sign-by-sigstore-private-key),请从指定的路径读取要使用的密码。
--tls-verify¶
连接到注册表时要求使用 HTTPS 并验证证书(默认:true)。如果显式设置为 true,则使用 TLS 验证。如果设置为 false,则不使用 TLS 验证。如果未指定,则使用 TLS 验证,除非目标注册表在 containers-registries.conf(5) 中被列为不安全的注册表
示例¶
将指定的镜像推送到本地目录
# 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
Getting image source signatures
Copying blob sha256:9cadd93b16ff2a0c51ac967ea2abfadfac50cfa3af8b5bf983d89b8f8647f3e4
71.41 MB / 71.41 MB [======================================================] 9s
Copying blob sha256:4aa565ad8b7a87248163ce7dba1dd3894821aac97e846b932ff6b8ef9a8a508a
1.21 KB / 1.21 KB [========================================================] 0s
Copying config sha256:f1b09a81455c351eaa484b61aacd048ab613c08e4c5d1da80c4c46301b03cf3b
3.01 KB / 3.01 KB [========================================================] 0s
Writing manifest to image destination
Storing signatures
参见¶
podman(1), podman-pull(1), podman-login(1), containers-certs.d(5), containers-registries.conf(5), containers-transports(5)
故障排除¶
有关常见问题的解决方案,请参阅 podman-troubleshooting(7)。