Ansible 在 Docker Hub 混用 Ansible 自动建置 Docker image
上章「Ansible 混用 Ansible 建置 Docker image」冻仁简化了建置 (build) image 的流程,虽可降低维护成本,但是当维护的 image 一多,就显得开发机不够力。
一般企业内部会自行架设 Jenkins CI 或 GitLab CI 等服务,把建置 images 的工作移至 build server 上。
以下冻仁将借由 chusiang/vim-and-vi-mode
image 讲解 Docker Hub 的 Auto-build 技巧。
Docker Hub 是什么?
Docker Hub 是官方维护的 image 市集 (marketplace)。我们可以在网站上取得 Ubuntu, Nginx, MySQL 等官方和社群成员所维护的 image。
chusiang/vim-and-vi-mode 是什么?
chusiang/vim-and-vi-mode
是借由 Dockerfile 和 chusiang.vim-and-vi-mode
role 建置的 Docker image,上章已提过该 Role,在此就不多加详述。
- Docker Hub: https://hub.docker.com/r/chusiang/vim-and-vi-mode/
- Galaxy: https://galaxy.ansible.com/chusiang/vim-and-vi-mode/
- GitHub: https://github.com/chusiang/vim-and-vi-mode.ansible.role/
目前支持的 Linux发行版本有:
- ubuntu14.04, lastest
- ubuntu16.04
- debian7
- debian8
- centos6
- centos7
怎么在 Docker Hub 自动建置 Docker image?
建立 Dockerfile 的前置作业冻仁已在上章介绍过,这里就不多提了。
- 登入 Docker Hub。
点击右上角的 Create (建立),并点击 Create Automated Build (自动建置)。
选择 GitHub。
找到要 Auto-build 的 GitHub repository。
选择好 repository 后,可以在 Name 一栏设定名称。
注意!按下送出后就不能变更名称了!
进入 Build Settings 页面设置 build image 相关设定。
- Type:依 branch 或 tag 进行建置。
- Name:设置 branch 和 tag 的名称。
- Dockerfile Location:Dockerfile 的存放路径。
- Docker Tag Name:设置 Docker tag 名称。
在还末推送提交 (push commit) 之前,可先藉由右方的 Trigger 进行手动 build image。
在 Build Details 页面里可以观看建置状态。
在 Tags 页面可以看到这个 image 有哪些 tag 可以用。
在 Dockerfile 页面可以看到内容与上章介绍的雷同。
现在,我们可以从 Docker Pull Command 取得下载 image 的指令,并可从 Source Repository 取得原始码。
以上就是 Docker Hub 的 Auto-build 设置。现在我们除了可以用一份 Ansible Roles 进行组态设定,还可以从 Docker Hub 取得 build 好的 Docker image,真是一举两得啊!
后话
自从有了这些 Docker images,不管是自己要跨 Linux 平台测环境,还是帮 Vim Taiwan User Group 社群成员的 vimrc 除错都有很大的帮助呢!