怎麼混用 Ansible 建置 Docker image?

28. 怎麼混用 Ansible 建置 Docker image?

在「05. 怎麼用 Docker 練習 Ansible?」一章時,曾提到可以用 Ansible 建置 Docker image。接下來凍仁將藉由 chusiang.vim-and-vi-mode role 講解 Dockerize (Docker 化) Ansible role 的小技巧。

automate_with_ansible_practice-31.jpg

chusiang.vim-and-vi-mode 是什麼?

chusiang.vim-and-vi-mode 是用來安裝 Vim 和設置 vi-mode 的 Ansible Role,目前支援的平台有 Ubuntu, Debian, CentOS 和 macOS。

  • Galaxy: https://galaxy.ansible.com/chusiang/vim-and-vi-mode/

  • GitHub: https://github.com/chusiang/vim-and-vi-mode.ansible.role/

對於凍仁這位 Vim 重度使用者而言,會想在各個環境都使用 vi-mode,索性就寫了一個 Role 來處理這些索碎的操作。

檔案結構

與之前 Roles 的範例相比,這次多了 builds/ 目錄和各個發行版本的 Dockerfile

怎麼建置 Docker image?

建立 Dockerfile

Dockerfile 是我們使用 docker build 指令建置 image 會用到的檔案。這邊只以 Ubuntu 14.04 的 Dockerfile 進行解說,如想深入了解還請參考 Dockerfile reference | Docker 一文。

  1. 第 2 行:宣告上層 docker image 的來源為 williamyeh/ansible:ubuntu14.04-onbuild

  2. 第 11-13 行:執行安裝 curl, git, make 套件和取得 Playbooks 等事先作業。

  3. 第 15 行:設置 playbook 路徑。

  4. 第 16 行:用 Ansible 處理後續的組態任務。

建置 Docker image

有了 Dockerfile,我們就可藉由 docker build 指令建置 docker imgae。

  1. 進入 builds/ubuntu14.04/ 的目錄。

  1. 建置 docker image。

2016-12-28-ansible-docker.gif
  1. 列出 docker image,成功後應與以下結果雷同。

以上即是使用 Ansible 建置 Docker image 的示範,下章凍仁將介紹怎麼把這一套流程搬到 Docker Hub 上。

後語

Dockerfile + Shell Script 的組合雖好,可步驟一多就會顯得雜亂且難以維護,這時就是 Ansible 出場的時候了!

透過 Ansible 我們可以很快速的把環境移植到 Docker 上,若需針對 Docker 進行微調,相信底下的範例可以幫上不少忙。

相關連結

Last updated

Was this helpful?