[pkg-go] Bug#1033826: podman: Cannot load gzip compressed images

Antonio Cebrián ancebfer at gmail.com
Sun Apr 2 11:46:29 BST 2023


Package: podman
Version: 4.3.1


Podman cannot load images compressed with gzip. Uncompressed images or 
bzip2 compressed images work right therefore it seems to be a problem 
related to gzip handling.

It seems to be the same problem reported here:

https://github.com/containers/podman/issues/15944


Tested under Bookworm with podman 4.3.1:

*$ podman image pull hello-world:latest*
Resolved "hello-world" as an alias 
(/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull docker.io/library/hello-world:latest...
Getting image source signatures
Copying blob 2db29710123e done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412

*$ podman image save hello-world:latest > hello-world.tar*

*$ podman image save hello-world:latest | gzip > hello-world.tar.gz*

*$ podman image save hello-world:latest | bzip2 > hello-world.tar.bz2*

*$ podman image load -i hello-world.tar*
Getting image source signatures
Copying blob e07ee1baac5f skipped: already exists
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image: docker.io/library/hello-world:latest

*$ podman image load -i hello-world.tar.gz*
Error: payload does not match any of the supported image formats:
  * oci: initializing source oci:hello-world.tar.gz:: open 
hello-world.tar.gz/index.json: not a directory
  * oci-archive: loading index: open /var/tmp/oci3062655986/index.json: 
no such file or directory
  * docker-archive: loading tar component manifest.json: unexpected EOF
  * dir: open hello-world.tar.gz/manifest.json: not a directory

*$ podman image load -i hello-world.tar.bz2*
Getting image source signatures
Copying blob e07ee1baac5f skipped: already exists
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image: docker.io/library/hello-world:latest


Attached you have the debug output of the failing command:

*$ podman --debug image load -i hello-world.tar.gz*


In Bullseye with podman 3.0.1 all works as expected:

*$ podman image pull hello-world:latest*
Resolved "hello-world" as an alias 
(/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull docker.io/library/hello-world:latest...
Getting image source signatures
Copying blob 2db29710123e done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412

*$ podman image save hello-world:latest > hello-world.tar*
Copying blob e07ee1baac5f done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures

*$ podman image save hello-world:latest | gzip > hello-world.tar.gz*
Copying blob e07ee1baac5f done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures

*$ podman image save hello-world:latest | bzip2 > hello-world.tar.bz2*
Copying blob e07ee1baac5f done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures

*$ podman image load -i hello-world.tar*
Getting image source signatures
Copying blob e07ee1baac5f [--------------------------------------] 0.0b 
/ 0.0b
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/hello-world:latest

*$ podman image load -i hello-world.tar.gz*
Getting image source signatures
Copying blob e07ee1baac5f skipped: already exists
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/hello-world:latest

*$ podman image load -i hello-world.tar.bz2*
Getting image source signatures
Copying blob e07ee1baac5f [--------------------------------------] 0.0b 
/ 0.0b
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/hello-world:latest


Best regards.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-go-maintainers/attachments/20230402/afe0819c/attachment.htm>
-------------- next part --------------
$ podman --debug image load -i hello-world.tar.gz
INFO[0000] podman filtering at log level debug
DEBU[0000] Called load.PersistentPreRunE(podman --debug image load -i hello-world.tar.gz)
DEBU[0000] Merged system config "/usr/share/containers/containers.conf"
DEBU[0000] Using conmon: "/usr/bin/conmon"
DEBU[0000] Initializing boltdb state at /home/devel/.local/share/containers/storage/libpod/bolt_state.db
DEBU[0000] Using graph driver vfs
DEBU[0000] Using graph root /home/devel/.local/share/containers/storage
DEBU[0000] Using run root /run/user/1000/containers
DEBU[0000] Using static dir /home/devel/.local/share/containers/storage/libpod
DEBU[0000] Using tmp dir /run/user/1000/libpod/tmp
DEBU[0000] Using volume path /home/devel/.local/share/containers/storage/volumes
DEBU[0000] Set libpod namespace to ""
DEBU[0000] [graphdriver] trying provided driver "vfs"
DEBU[0000] Initializing event backend journald
DEBU[0000] Configured OCI runtime runc initialization failed: no valid executable found for OCI runtime runc: invalid argument
DEBU[0000] Configured OCI runtime runj initialization failed: no valid executable found for OCI runtime runj: invalid argument
DEBU[0000] Configured OCI runtime kata initialization failed: no valid executable found for OCI runtime kata: invalid argument
DEBU[0000] Configured OCI runtime runsc initialization failed: no valid executable found for OCI runtime runsc: invalid argument
DEBU[0000] Configured OCI runtime krun initialization failed: no valid executable found for OCI runtime krun: invalid argument
DEBU[0000] Using OCI runtime "/usr/bin/crun"
INFO[0000] Setting parallel job count to 25
DEBU[0000] Loading image from "hello-world.tar.gz"
DEBU[0000] -> Attempting to load "hello-world.tar.gz" as an OCI directory
DEBU[0000] Normalized platform linux/amd64 to {amd64 linux  [] }
DEBU[0000] parsed reference into "[vfs@/home/devel/.local/share/containers/storage+/run/user/1000/containers]localhost/hello-world.tar.gz:latest"
DEBU[0000] Copying source image hello-world.tar.gz: to destination image [vfs@/home/devel/.local/share/containers/storage+/run/user/1000/containers]localhost/hello-world.tar.gz:latest
DEBU[0000] Error loading hello-world.tar.gz (oci): initializing source oci:hello-world.tar.gz:: open hello-world.tar.gz/index.json: not a directory
DEBU[0000] -> Attempting to load "hello-world.tar.gz" as an OCI archive
DEBU[0000] Normalized platform linux/amd64 to {amd64 linux  [] }
DEBU[0000] Error deleting temporary directory: <nil>
DEBU[0000] Error loading hello-world.tar.gz (oci-archive): loading index: open /var/tmp/oci1734198058/index.json: no such file or directory
DEBU[0000] -> Attempting to load "hello-world.tar.gz" as a Docker archive
DEBU[0000] Detected compression format gzip
DEBU[0000] No compression detected
DEBU[0000] Error loading hello-world.tar.gz (docker-archive): loading tar component manifest.json: unexpected EOF
DEBU[0000] -> Attempting to load "hello-world.tar.gz" as a Docker dir
DEBU[0000] Normalized platform linux/amd64 to {amd64 linux  [] }
DEBU[0000] Error loading hello-world.tar.gz (dir): open hello-world.tar.gz/manifest.json: not a directory
Error: payload does not match any of the supported image formats:
 * oci: initializing source oci:hello-world.tar.gz:: open hello-world.tar.gz/index.json: not a directory
 * oci-archive: loading index: open /var/tmp/oci1734198058/index.json: no such file or directory
 * docker-archive: loading tar component manifest.json: unexpected EOF
 * dir: open hello-world.tar.gz/manifest.json: not a directory


More information about the Pkg-go-maintainers mailing list