Docker CLI、Podman 等类似工具可以共享镜像本地存储吗?

Can Docker CLI, Podman and other similar tools have shared local storage for images?

我最近开始使用 podman,并意识到通过 docker 拉取的图像无法用于 podman,反之亦然。例如:-

如果我使用docker CLI 拉取镜像,如下所示

docker pull registry.access.redhat.com/ubi7-minimal

如果我想将同一个镜像与 podman 或 buildah 一起使用,结果我不能

[riprasad@localhost ~]$ podman inspect registry.access.redhat.com/ubi7-minimal
Error: error getting image "registry.access.redhat.com/ubi7-minimal": unable to find 'registry.access.redhat.com/ubi7-minimal' in local storage: no such image

我知道这是因为 podman 和 docker 使用不同的存储位置,因此通过 docker 拉下的图像不能用于 podman,反之亦然。

[riprasad@localhost ~]$ docker images
REPOSITORY                                                                                 TAG                 IMAGE ID            CREATED             SIZE
registry.access.redhat.com/ubi7-minimal                                                    latest              fc8736ea8c5b        5 weeks ago         81.5MB

[riprasad@localhost ~]$ podman images
REPOSITORY   TAG   IMAGE ID   CREATED   SIZE

有没有办法缓解这个问题,并以某种方式让 docker 和 podman 在同一个图像上互换工作,而不管它是否已通过 docker 或 podman 被拉下??

Docker 和 Podman 肯定存储不一样。他们不能,因为 Docker 控制锁定到它在守护进程中的存储。而 Podman、Buildah、CRI-O、Skopeo 都可以共享内容,因为它们使用文件系统。

Podman 和其他工具可以通过“docker-daemon”传输间接使用 docker-daemon 存储。

类似于:

podman 运行 docker-daemon:alpine echo hello

应该可以。

请注意,podman 正在从 docker 守护进程中拉出镜像并将镜像存储在 containers/storage 中,然后 运行 连接容器,它没有使用Docker直接存储。

你也可以

podman push myimage docker-daemon:myimage

将图像从 containers/storage 复制到 docker 守护进程。

添加到@rhatdan 的 post

podman run docker://alpine echo hello

这对我有用。

更多详情:Here->