codecamp

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 技巧。

automate_with_ansible_practice-32.jpg

Docker Hub 是什么?

Docker Hub 是官方维护的 image 市集 (marketplace)。我们可以在网站上取得 Ubuntu, Nginx, MySQL 等官方和社群成员所维护的 image。

2016-12-29-ansible-docker-hub-0.png

chusiang/vim-and-vi-mode 是什么?

chusiang/vim-and-vi-mode 是借由 Dockerfile 和 chusiang.vim-and-vi-mode role 建置的 Docker image,上章已提过该 Role,在此就不多加详述。

目前支持的 Linux发行版本有:

  • ubuntu14.04, lastest
  • ubuntu16.04
  • debian7
  • debian8
  • centos6
  • centos7

怎么在 Docker Hub 自动建置 Docker image?

建立 Dockerfile 的前置作业冻仁已在上章介绍过,这里就不多提了。

  1. 登入 Docker Hub。
  2. 点击右上角的 Create (建立),并点击 Create Automated Build (自动建置)。 2016-12-29-ansible-docker-hub-1.png

  3. 选择 GitHub。 2016-12-29-ansible-docker-hub-2.png

  4. 找到要 Auto-build 的 GitHub repository。2016-12-29-ansible-docker-hub-3.png

  5. 选择好 repository 后,可以在 Name 一栏设定名称。 2016-12-29-ansible-docker-hub-4.png

    注意!按下送出后就不能变更名称了!

  6. 进入 Build Settings 页面设置 build image 相关设定。 2016-12-29-ansible-docker-hub-6.png

    1. Type:依 branch 或 tag 进行建置。
    2. Name:设置 branch 和 tag 的名称。
    3. Dockerfile Location:Dockerfile 的存放路径。
    4. Docker Tag Name:设置 Docker tag 名称。
  7. 在还末推送提交 (push commit) 之前,可先藉由右方的 Trigger 进行手动 build image。

  8. 在 Build Details 页面里可以观看建置状态。 2016-12-29-ansible-docker-hub-7.png

  9. 在 Tags 页面可以看到这个 image 有哪些 tag 可以用。 2016-12-29-ansible-docker-hub-8.png

  10. 在 Dockerfile 页面可以看到内容与上章介绍的雷同。 2016-12-29-ansible-docker-hub-9.png

  11. 现在,我们可以从 Docker Pull Command 取得下载 image 的指令,并可从 Source Repository 取得原始码。 2016-12-29-ansible-docker-hub-5.png

以上就是 Docker Hub 的 Auto-build 设置。现在我们除了可以用一份 Ansible Roles 进行组态设定,还可以从 Docker Hub 取得 build 好的 Docker image,真是一举两得啊!

后话

自从有了这些 Docker images,不管是自己要跨 Linux 平台测环境,还是帮 Vim Taiwan User Group 社群成员的 vimrc 除错都有很大的帮助呢!

相关连结


Ansible 混用 Ansible 建置 Docker image
Ansible 用 Vault 管理敏感资料
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }