一、查看远程容器仓库的配置与内容

远程镜像仓库(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。 

更多推荐