如何获取使用 fabric8 maven 插件构建的 docker 图像详细信息?

how to get docker images details that are built using fabric8 maven plugin?

在我们的项目中,我们创建 docker 图像,使用 fabric8 maven 插件推送到注册表。我们有一个要求,我们需要找出在项目构建中创建的每个图像的详细信息(名称、标签、推送到的注册表等)。
fabric8 中是否有任何开箱即用的解决方案?或者我们是否有 java API 的 fabric8 可用,我们可以使用它们并将其集成到我们现有的 maven 插件中以获取此类信息?

据我所知,无法从插件本身获取此类信息。但是当使用 fabric8docker-maven-plugin 构建 Docker 图像时,默认情况下会在 target/ 文件夹中创建如下层次结构:

target
├── docker
│   ├── build.timestamp
│   └── my
│       └── registry
│           ├── image1
│           │   ├── tag1
│           │   │   ├── build
│           │   │   │   └── Dockerfile
│           │   │   ├── tmp
│           │   │   │   └── docker-build.tar
│           │   │   └── work
│           │   └── tag2
│           │       ├── build
│           │       │   └── Dockerfile
│           │       ├── tmp
│           │       │   └── docker-build.tar
│           │       └── work
│           ├── image2
│           │   ├── tag1
│           │   │   ├── ...
...         ... ... ...

在此示例中,构建了 3 个映像:

  • my/registry/image1:tag1
  • my/registry/image1:tag2
  • my/registry/image2:tag1

因此浏览此层次结构可以让您了解图像名称、标签和注册表。我同意这不是最干净的解决方案。

或者,您可以使用 spotifydockerfile-maven-plugin (https://github.com/spotify/dockerfile-maven),因为它会创建一个 docker-info JAR,其中包含您要查找的内容:

META-INF/
META-INF/MANIFEST.MF
META-INF/docker/
META-INF/docker/my/registry/
META-INF/docker/my/registry/image1/
META-INF/docker/my/registry/image1/image-name
META-INF/docker/my/registry/image1/repository
META-INF/docker/my/registry/image1/tag
META-INF/docker/my/registry/image1/image-id
META-INF/maven/
META-INF/maven/my/registry/
META-INF/maven/my/registry/image1/
META-INF/maven/my/registry/image1/pom.xml
META-INF/maven/my/registry/image1/pom.properties

然后可以将此 docker-info JAR 放入存储库管理器中,以帮助检索有关构建图像的信息,此外还可以对不同构建进行版本控制。