docker - Docker CLI、Podman 和其他类似工具是否可以为图像共享本地存储?
问题描述
我最近开始使用 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 守护进程中提取图像并将图像存储在容器/存储中,然后运行容器,它不直接使用 Docker 存储。
你也可以做
podman push myimage docker-daemon:myimage
将容器/存储中的图像复制到 docker 守护程序中。
推荐阅读
- python - 如何防止混乱并将 api 调用保存在不同的文件中?(Python)
- java - Javafx从单独的类控制UI,不能从调用类添加节点
- javascript - 如何创建一个数组,该数组仅包含 JavaScript 中包含“ball”的 items 元素中的元素?
- spyder - Spyder 中的 Openpyxl
- c++ - '.' 是什么意思?表达式中的 60 后均值?
- docker - 自定义运行时不会使用 Dockerfile
- caching - 如何以编程方式使 Quarkus 缓存无效?
- javascript - 在客户端和服务器端之间发送信息和变量
- java - ConcurrentSkipListMap 如何正确使用
- python - 输入到 tensorflow nn 的数据显然格式不正确