-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Description
Is this a BUG REPORT or FEATURE REQUEST? (leave only one on its own line)
/kind bug
Description
I want to be able to tag an oci archive multiple times (similar to the results of podman tag, but automatically for oci tars that are loaded into podman). To do this I duplicate the manifest descriptor in index.json and give it a different image ref name, but when I try to load the new oci archive into podman, I get an error.
Steps to reproduce the issue:
- Run:
podman pull gcr.io/distroless/java
podman save -o distroless.tar --format oci-archive gcr.io/distroless/java
mkdir distroless-oci
tar -xvf distroless.tar -C distroless-oci
- Duplicate the manifest descriptor in
distroless-oci/index.jsonand modify theorg.opencontainers.image.ref.name, so the contents are as follows:
{
"schemaVersion":2,
"manifests":[
{
"mediaType":"application/vnd.oci.image.manifest.v1+json",
"digest":"sha256:3a5a334aff603a9f5914640802c4d909c9df285e504c05968d51105adfaa161c",
"size":821,
"annotations":{
"org.opencontainers.image.ref.name":"gcr.io/distroless/java"
}
},
{
"mediaType":"application/vnd.oci.image.manifest.v1+json",
"digest":"sha256:3a5a334aff603a9f5914640802c4d909c9df285e504c05968d51105adfaa161c",
"size":821,
"annotations":{
"org.opencontainers.image.ref.name":"gcr.io/distroless/java:tag2"
}
}
]
}
-
Run:
tar -czf new-distroless.tar distroless-oci/ -
Run either
podman load < new-distroless.tarorpodman pull oci-archive:new-distroless.tar
Describe the results you received:
Using podman load < new-distroless.tar:
open /var/tmp/podman675604817/manifest.json: not a directory
Error: error pulling "": unable to pull dir:/var/tmp/podman675604817: unable to pull image: Error determining manifest MIME type for dir:/var/tmp/podman675604817: open /var/tmp/podman675604817/manifest.json: not a directory
Using podman pull oci-archive:new-distroless.tar:
Error: error pulling image "oci-archive:jib-image.tar": unable to pull oci-archive:jib-image.tar: error determining pull goal for image "oci-archive:jib-image.tar": error loading manifest for {"jib-image.tar" "/usr/local/google/home/tcordle/IdeaProjects/hellogradle/oci/jib-image.tar" ""}: error loading index: more than one image in oci, choose an image
Describe the results you expected:
podman images loads the oci archive successfully, and lists both gcr.io/distroless/java:latest and gcr.io/distroless/java:tag2.
Additional information you deem important (e.g. issue happens only occasionally):
I'm essentially trying to replicate what the RepoTags field in a docker tar manifest does when you docker load the tar. (opencontainers/image-spec#796)
Output of podman version:
Version: 1.6.4-dev
RemoteAPI Version: 1
Go Version: go1.11.6
Git Commit: c673ff8cb63c71a39e1a1d561373af42bfea7f24
Built: Wed Nov 20 11:16:05 2019
OS/Arch: linux/amd64
Output of podman info --debug:
debug:
compiler: gc
git commit: c673ff8cb63c71a39e1a1d561373af42bfea7f24
go version: go1.11.6
podman version: 1.6.4-dev
host:
BuildahVersion: 1.11.5
CgroupVersion: v1
Conmon:
package: Unknown
path: /usr/local/libexec/podman/conmon
version: 'conmon version 2.0.4-dev, commit: f6d23b51a3c56cccd4e13b4eea361e98e1855802'
Distribution:
distribution: debian
version: rodete
IDMappings:
gidmap:
- container_id: 0
host_id: 89939
size: 1
- container_id: 1
host_id: 100000
size: 65536
uidmap:
- container_id: 0
host_id: 535966
size: 1
- container_id: 1
host_id: 100000
size: 65536
MemFree: 15417282560
MemTotal: 67534381056
OCIRuntime:
name: runc
package: 'containerd.io: /usr/bin/runc'
path: /usr/bin/runc
version: |-
runc version 1.0.0-rc8+dev
commit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
spec: 1.0.1-dev
SwapFree: 68631392256
SwapTotal: 68631392256
arch: amd64
cpus: 12
eventlogger: journald
hostname: tcordle33.nyc.corp.google.com
kernel: 4.19.67-2rodete2-amd64
os: linux
rootless: true
slirp4netns:
Executable: /usr/bin/slirp4netns
Package: Unknown
Version: |-
slirp4netns version 0.4.2
commit: 69153b0d1cb82216d6782179ff7c3c5e91c731a1
uptime: 510h 47m 45.11s (Approximately 21.25 days)
registries:
blocked: null
insecure: null
search:
- docker.io
- registry.fedoraproject.org
- registry.access.redhat.com
store:
ConfigFile: /usr/local/google/home/tcordle/.config/containers/storage.conf
ContainerStore:
number: 0
GraphDriverName: vfs
GraphOptions: {}
GraphRoot: /usr/local/google/home/tcordle/.local/share/containers/storage
GraphStatus: {}
ImageStore:
number: 0
RunRoot: /run/user/535966
VolumePath: /usr/local/google/home/tcordle/.local/share/containers/storage/volumes