podman-push(1)
π podman-push(1) β the manual page where we yeet images to the moon π
Hey bestie! Welcome to podman-push(1), the manual page that's part of the General Commands Manual. The way that this command just pushes images, manifest lists, and image indexes from local storage to literally anywhere else? Iconic. No cap, it's giving main character energy. πβ¨
β¨ NAME β¨
podman-push β Push an image, manifest list or image index from local storage to elsewhere. Periodt. π
πΈ SYNOPSIS πΈ
These are the two ways to use it, iykyk. π
podman push [options] image [destination]
podman image push [options] image [destination]
π¦ DESCRIPTION π¦
Okay so basically, podman push pushes an image, manifest list or image index from local storage to a specified destination. That's the tea. β The way that it just moves images from local storage to a specified destination? Obsessed. π No surprises, just vibes and image-moving. π«Ά
π Image storage π
Images are pushed from those stored in local image storage. Like, they're already on your machine, and you're yeeting them somewhere else. It's giving "clean up your room" but for container images. π
π₯ DESTINATION π₯
So DESTINATION is the location the container image is pushed to. It supports all transports from containers-transports(5). If no transport is specified, the docker (i.e., container registry) transport is used. For remote clients, including Mac and Windows (excluding WSL2) machines, docker is the only supported transport. So if you're on a Mac or Windows (unless you're on WSL2), you're stuck with docker transport. Sorry bestie, it's giving limited options. π
Here are some iconic examples to get you started:
# 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
These are all iconic, fr fr. π₯
β¨ OPTIONS β¨
Let's go through these one by one, bestie. π
--authfile=pathβ Path of the authentication file. Default is${XDG_RUNTIME_DIR}/containers/auth.jsonon Linux, and$HOME/.config/containers/auth.jsonon Windows/macOS. The file is created bypodman login. If the authorization state is not found there,$HOME/.docker/config.jsonis checked, which is set usingdocker login.
Note: There is also the option to override the default path of the authentication file by setting theREGISTRY_AUTH_FILEenvironment variable. This can be done withexport REGISTRY_AUTH_FILE=path.
--cert-dir=pathβ Use certificates at path (*.crt,*.cert,*.key) to connect to the registry. (Default:/etc/containers/certs.d) For details, see containers-certs.d(5). (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)--compressβ Compress tarball image layers when pushing to a directory using the 'dir' transport. (default is same compression type, compressed or uncompressed, as source)
Note: This flag can only be set when using the dir transport
--compression-format=gzip | zstd | zstd:chunkedβ Specifies the compression format to use. Supported values are:gzip,zstdandzstd:chunked. The default isgzipunless overridden in thecontainers.conffile.zstd:chunkedis incompatible with encrypting images, and will be treated aszstdwith a warning in that case.--compression-level=levelβ Specifies the compression level to use. The value is specific to the compression algorithm used, e.g. for zstd the accepted values are in the range1-20(inclusive) with a default of3, while for gzip it is1-9(inclusive) and has a default of5.--creds=[username[:password]]β The[username[:password]]to use to authenticate with the registry, if required. If one or both values are not supplied, a command line prompt appears and the value can be entered. The password is entered without echo.
Note that the specified credentials are only used to authenticate against target registries. They are not used for mirrors or when the registry gets rewritten (see containers-registries.conf(5)); to authenticate against those consider using a containers-auth.json(5) file.
--digestfile=Digestfileβ After copying the image, write the digest of the resulting image to the file.--disable-content-trustβ This is a Docker-specific option to disable image verification to a container registry and is not supported by Podman. This option is a NOOP and provided solely for scripting compatibility.--encrypt-layer=layer(s)β Layer(s) to encrypt: 0-indexed layer indices with support for negative indexing (e.g.0is the first layer,-1is the last layer). If not defined, encrypts all layers if encryption-key flag is specified.--encryption-key=keyβ The[protocol:keyfile]specifies the encryption protocol, which can beJWE(RFC7516),PGP(RFC4880), andPKCS7(RFC2315) and the key material required for image encryption. For instance,jwe:/path/to/key.pemorpgp:admin@example.comorpkcs7:/path/to/x509-file.--force-compressionβ If set, push uses the specified compression algorithm even if the destination contains a differently-compressed variant already. Defaults totrueif--compression-formatis explicitly specified on the command-line,falseotherwise.--format, -f=formatβ Manifest Type (oci,v2s2, orv2s1) to use when pushing an image.--quiet, -qβ Suppress informational output messages (which indicate which instruction is being processed, and the progress of the instruction). Print only the final error message or successful completion information, such as the image or container ID.--remove-signaturesβ Discard any pre-existing signatures in the image.--retry=attemptsβ Number of times to retry pulling or pushing images between the registry and local storage in case of failure. Default is3.--retry-delay=durationβ Duration of delay between retry attempts when pulling or pushing images between the registry and local storage in case of failure. The default is to start at two seconds and then exponentially back off. The delay is used when this value is set, and no exponential back off occurs.--sign-by=keyβ Add a βsimple signingβ signature at the destination using the specified key. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)--sign-by-sigstore=param-fileβ Add a sigstore signature based on further options specified in a container's sigstore signing parameter file param-file. See containers-sigstore-signing-params.yaml(5) for details about the file format.--sign-by-sigstore-private-key=pathβ Add a sigstore signature at the destination using a private key at the specified path. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)--sign-by-sq-fingerprint=fingerprintβ Add a βsimple signingβ signature using a Sequoia-PGP key with the specified fingerprint. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)--sign-passphrase-file=pathβ If signing the image (using--sign-by,sign-by-sq-fingerprintor--sign-by-sigstore-private-key), read the passphrase to use from the specified path.--tls-verifyβ Require HTTPS and verify certificates when contacting registries (default:true). If explicitly set totrue, TLS verification is used. If set tofalse, TLS verification is not used. If not specified, TLS verification is used unless the target registry is listed as an insecure registry in containers-registries.conf(5)
π EXAMPLES π
These examples are lowkey iconic. Let's get into it. π
Push the specified image to a local directory:
# podman push imageID dir:/path/to/image
Push the specified image to a local directory in OCI format:
# podman push imageID oci-archive:/path/to/layout:image:tag
Push the specified image to a container registry:
# podman push imageID docker://registry.example.com/repository:tag
Push the specified image to a container registry and save the digest in the specified file:
# podman push --digestfile=/tmp/mydigest imageID docker://registry.example.com/repository:tag
Push the specified image into the local Docker daemon container store:
# podman push imageID docker-daemon:image:tag
Push the specified image with a different image name using credentials from an alternate authfile path:
# 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
Push the specified image to a local directory as an OCI image:
# 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
π SEE ALSO π
Check these out for more tea. πΈ
- podman(1)
- podman-pull(1)
- podman-login(1)
- containers-certs.d(5)
- containers-registries.conf(5)
- containers-transports(5)
π Troubleshooting π
See podman-troubleshooting(7) for solutions to common issues.
And that's the tea, bestie! This was podman-push(1) from the General Commands Manual β you know, the one with the source, version, and date at the bottom. Now go push some images and slay! π β¨π«Ά
π¦ where this page comes from
- arch rolling: podman-docker 6.1.4-1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms