Podman 与 Docker 远程镜像仓库的查看与镜像详情获取
一、查看远程容器仓库的配置与内容
远程镜像仓库(Registry)是存储容器镜像的核心,Podman 和 Docker 均支持通过配置文件和命令行工具查看仓库信息及其中的镜像。
1. 查看已配置的远程仓库地址
Podman 配置查看
Podman 的远程仓库配置存储在系统级或用户级配置文件中:
- 系统级配置:`/etc/containers/registries.conf`
- 用户级配置:`~/.config/containers/registries.conf`
通过以下命令查看配置的仓库地址:
# 查看系统级配置的仓库
cat /etc/containers/registries.conf | grep -A 5 "registry"
# 查看用户级配置的仓库
cat ~/.config/containers/registries.conf | grep -A 5 "registry"
配置文件中 `[[registry]]` 块的 `location` 字段即为仓库地址(如 `docker.io`、`my-registry.example.com:5000`)。
此外,通过 `unqualified-search-registries` 可查看默认搜索仓库的优先级:grep "unqualified-search-registries" /etc/containers/registries.conf
Docker 配置查看
Docker 的仓库配置主要通过 `daemon.json` 文件(默认无,需手动创建)或命令行参数指定:
- 配置文件路径:`/etc/docker/daemon.json`
查看配置的仓库信息:
# 查看 Docker 守护进程配置(包含仓库相关配置)
docker info | grep -i "registry"
2. 搜索远程仓库中的镜像
Podman:`podman search`
# 搜索默认仓库中的 nginx 镜像
podman search nginx
# 搜索指定仓库(如 192.168.1.100:5000)中的镜像
podman search --registry 192.168.1.100:5000 nginx
# 过滤官方镜像
podman search --filter=is-official=true nginx
Docker:`docker search`
# 搜索默认仓库中的 nginx 镜像
docker search nginx
# 搜索指定仓库中的镜像(需包含仓库地址)
docker search 192.168.1.100:5000/nginx
# 过滤星级 ≥ 3 的镜像
docker search --filter=stars=3 nginx
3. 查看远程仓库中镜像的标签(Tags)
Podman 方式
- 使用 `skopeo` 工具(Podman 配套工具):
# 查看 Docker Hub 中 nginx 的标签(前 10 个)
skopeo list-tags docker://docker.io/library/nginx | jq '.Tags[:10]'
# 查看私有仓库中 my-nginx 的标签
skopeo list-tags docker://192.168.1.100:5000/my-nginx
- 调用仓库 API:
# 私有仓库标签 API
curl http://192.168.1.100:5000/v2/my-nginx/tags/list | jq .
Docker 方式
- 使用 `curl` 调用仓库 API(Docker 无内置标签查看命令,需依赖 API):
# 查看 Docker Hub 中 nginx 的标签
curl https://registry.hub.docker.com/v2/library/nginx/tags/list | jq .
# 查看私有仓库中 my-nginx 的标签
curl http://192.168.1.100:5000/v2/my-nginx/tags/list | jq .
- 第三方工具:可使用 `docker-tags` 等工具简化操作(需额外安装):
# 安装 docker-tags(需 Node.js 环境)
npm install -g docker-tags
# 查看 nginx 镜像标签
docker-tags nginx
二、查看镜像的详细信息
1. 查看本地镜像的详细信息
Podman:`podman inspect`
# 通过镜像名查看
podman inspect nginx:latest
# 通过镜像 ID 查看
podman inspect 5f1f4921d0c0
# 筛选环境变量
podman inspect nginx:latest | jq '.[0].Config.Env'
Docker:`docker inspect`
# 通过镜像名查看
docker inspect nginx:latest
# 通过镜像 ID 查看
docker inspect 5f1f4921d0c0
# 筛选暴露的端口
docker inspect nginx:latest | jq '.[0].Config.ExposedPorts'
2. 查看远程镜像的详细信息
Podman 方式
- `podman inspect` 直接查看远程镜像:
# 查看 Docker Hub 中 nginx:latest 的详情
podman inspect docker.io/library/nginx:latest
# 查看私有仓库中 my-nginx:v1 的详情(需先登录)
podman inspect 192.168.1.100:5000/my-nginx:v1
- `skopeo inspect` 补充查看: skopeo inspect docker://docker.io/library/nginx:latest
Docker 方式
- `docker manifest inspect`(Docker 18.06+ 支持):
# 查看远程镜像的 manifest 信息(包含架构、配置等)
docker manifest inspect nginx:latest
# 查看私有仓库中镜像的详情
docker manifest inspect 192.168.1.100:5000/my-nginx:v1
注意:若提示“experimental feature”,需在 `daemon.json` 中开启实验性特性: { "experimental": true }
重启 Docker 后生效:`systemctl restart docker`。
三、Podman 与 Docker 操作对比
| 操作场景 | Podman 命令/工具 | Docker 命令/工具 |
| 查看仓库配置| `cat /etc/containers/registries.conf`| `cat /etc/docker/daemon.json` + `docker info` |
| 搜索镜像 | `podman search` | `docker search` |
| 查看镜像标签 | `skopeo list-tags` + 仓库 API | 仓库 API + 第三方工具(如 `docker-tags`)|
| 查看本地镜像详情 | `podman inspect` | `docker inspect` |
| 查看远程镜像详情 | `podman inspect` + `skopeo inspect` | `docker manifest inspect` |
总结
Podman 和 Docker 在远程镜像仓库管理上的核心逻辑一致,但工具链略有差异:
- Podman 依赖 `registries.conf` 配置仓库,通过 `podman search` 搜索镜像,`skopeo` 辅助查看标签和详情;
- Docker 依赖 `daemon.json` 配置,搜索镜像使用 `docker search`,远程详情查看需通过 `docker manifest inspect` 或 API。
更多推荐
所有评论(0)