Bug 1797599
| Summary: | podman cannot support load tarball which the name with colon but docker can support this | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | kevin <welin> |
| Component: | podman | Assignee: | Jindrich Novy <jnovy> |
| Status: | CLOSED ERRATA | QA Contact: | Martin Jenner <mjenner> |
| Severity: | high | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.8 | CC: | bbaude, dwalsh, jligon, jnovy, lsm5, mheon, tsweeney, umohnani, weshen |
| Target Milestone: | rc | Keywords: | Extras |
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | podman-1.6.4-7.el7_8 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2020-04-01 00:25:22 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
I’m afraid this a known limitation; the : character is special the internal implementation of the docker-archive: transport. You can use (podman load < registry:2.tar.gz), which makes the file name irrelevant to podman, at the cost of making an extra on-disk copy in /var/tmp, rename the input, or use a symlink. I guess podman could create a temporary symlink automatically. I have found the extra on-disk copy in /var/tmp after I load the image successully using (podman load < registry:2.tar.gz) cd /var/tmp/ [root@localhost tmp]# ls docker-tar065395217 docker-tar267917452 docker-tar724534814 docker-tar214226193 docker-tar306480357 docker-tar854366455 docker-tar216811232 docker-tar708259437 docker-tar860970637 how to avoid this issue? Thanks for the report, that’s a straightforward bug (in both Podman and Buildah): https://github.com/containers/libpod/blob/537352cc3ee60373b41481a7f48e65b1978ea5f7/libpod/image/pull.go#L125 does not have a matching tarSource.Close(). This only happens if the input is compressed, so, as a possible _temporary_ workaround, you can decompress the image yourself (which will avoid creating the /var/tmp/docker-tar* copies, so it won’t require extra disk space — it could even be faster, because the content will be decompressed only once), and then delete the decompressed version manually. But we should just fix at least that part. Setting this PR to POST and sending it to Jindrich to package once the PR's merge in. Thanks Miloslav. which version fir podman the bug will be fixed? Matt Heon, can you answer Kevin as to which version of Podman this will be in? At the earliest, Podman 1.8.0, but I'm guessing 1.8.1 or 1.9.0 whichever release comes after 1.8.0. But Matt's the person that will know for sure. 1.8.0 final, probably releasing tomorrow upstream, should include a fix for the tar issue. I don't believe a fix for the issue of `:` in filenames is presently planned, the workaround of redirecting it into STDIN seems to work well enough. Have any plan to give the feature of podman save multiple images into one tarball? It has been talked about, but we need community members to step up to do the work, hint, hint. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2020:1227 |
Description of problem: Podman cannot support container image tarball which the name with colon (:) Version-Release number of selected component (if applicable): How reproducible: for example: [root@localhost container]# podman version Version: 1.4.4 RemoteAPI Version: 1 Go Version: go1.10.3 OS/Arch: linux/amd64 [root@localhost container]# hostnamectl Static hostname: localhost.localdomain Icon name: computer-vm Chassis: vm Machine ID: a578c2e325c64423bff97b7d2e54a87f Boot ID: 98fbd7eaa4dc4d008012136a729c7b70 Virtualization: vmware Operating System: OpenShift Enterprise CPE OS Name: cpe:/o:redhat:enterprise_linux:7.6:GA:server Kernel: Linux 3.10.0-957.el7.x86_64 Architecture: x86-64 [root@localhost container]# podman version Version: 1.4.4 RemoteAPI Version: 1 Go Version: go1.10.3 OS/Arch: linux/amd64 [root@localhost container]# ll total 9212 -rw-r--r--. 1 root root 9430705 Feb 3 20:47 registry:2.tar.gz [root@localhost container]# podman load -i registry:2.tar.gz Error: invalid filename (should not contain ':') "registry:2.tar.gz" [root@localhost container]# mv registry:2.tar.gz registry_2.tar.gz [root@localhost container]# podman load -i registry_2.tar.gz Getting image source signatures Copying blob a330d9dc14ce done Copying blob c62467775792 done Copying blob 9d08b7a37338 done Copying blob 7444ea29e45e done Copying blob 588f0b714a86 done Copying config 708bc6af7e done Writing manifest to image destination Storing signatures Loaded image(s): docker.io/library/registry:2 Steps to Reproduce: 1. 2. 3. Actual results: Expected results: we want the podman should support load tarball which the name with colon. currently, Docker daemon can support load tarball which the name with colon Additional info: