管理码头图像的层次结构

时间:2015-03-30 17:28:38

标签: docker

我正在考虑以下用例:

  1. 使用ubuntu服务器的基本映像
  2. 图像与java7设置,第一个孩子
  3. 使用java应用程序的图像,比如基于spring,使用第二个作为父
  4. 现在,比方说,我想添加到扩展第一个监控功能的所有图像,因此我修改了第一个。

    有没有办法,一种工具,一旦基础图像的构建完成,会在我的本地环境中触发所有孩子的自动构建?

3 个答案:

答案 0 :(得分:0)

我是我们的组织,我们有一个git repo,包含我们所有的基本图像(包括列表中的1和2),即Dockerfiles。特定于应用程序的图像留给各个团队及其回购(列表中的3个)

我们只有一个简单的shell脚本,可以按顺序构建和发布每个图像。每次登录此图片仓库都会在我们的CI系统中触发构建(http://www.go.cd/),从而最终再次构建所有图像。

设置简单,但有大约10个基本图像,大约3个深度,这对我们很有用。

答案 1 :(得分:0)

我们将Jenkins与git和docker插件一起使用。我们的Dockerfiles存储在一个git仓库中,每个Dockerfile和支持文件都有一个目录。然后在Jenkins中我们设置依赖项(手动),并在代码在git中更改时构建任何父图像的子图像。

答案 2 :(得分:0)

您可以尝试使用一个名为docker-bakery的小工具来分析dockerfiles的结构,并在父图像更改时启用分层构建。

例如,当dog图像更改时,子图像可以自动重建。

├── alpine-java
│   ├── bird
│   └── mammal
│       ├── cat
│       ├── dog
│       │   ├── dobermann
│       │   │   └── smaller-dobermann
│       │   ├── pitbull
│       │   └── labrador
│       └── horse
└── scratch
    └── fish

dog重建时的调用可以简单如下:

$/docker-bakery-example> cd dog
$/dog> make build-major-all
...
// docker build of child images
... 
$/dog> make push-major-all

以下是example project dockerfilesmake文件,使用非常方便。