為了要能夠自己製作 Concourse 的資源,我們需要先了解 Docker 的基本使用才行。
關於 Docker 安裝的方法在一開始架設 Concourse 的時候已經介紹過了,目前不論是 Windows / Mac / Linux 的安裝都相對的簡單,只要能夠將對應的套件安裝到作業系統上就可以使用。
一般來說 Docker 的 Image 是透過一個類似 Git Commit 的方式組成,所以是一種類似樹狀的結構。當我們指定使用某個 Image 的時候就會自動下載,不過也可以預先下載好 Image 在系統中加快操作的速度。
Concourse 也是一樣的,如果在操作中使用到的 Image 已經被下載的話,就不用重新下載。除非指定的版本不存在,一般都是沒有指定版本使用最新版的時候才會需要執行這個動作。
docker pull username/repoistory
大多數的 Docker Image 都會是由 username
跟 repoistory
所組成的,如果遇到像是 ruby
ubuntu
這類的,就代表是官方所提供的 Docker Image。
如果 Docker Image 有編譯的行為,直接使用 Dockerfile
設定後重新執行有時候會花上不少時間,所以通常會先執行一個作為基底的 Docker Image 先模擬一次操作,再開始動作。
docker run [options] username/repoistory command
舉例來說,我們要執行 Ruby 的 2.3
版
docker run -it ruby:2.3 /bin/bash
如果不指定版本的話,可以省略 :2.3
的設定,使用 -it
是表示 interactive
跟 tty
兩個設定,這會讓我們可以對 Docker Image 操作以及看到輸出的畫面。
當我們寫好 Dockerfile
之後,就會需要將他轉換為實際的 Docker Image。不過實際上就是由 Docker 自動地跑一次設定環境的流程,然後再封存成一個檔案。
docker build path
一般來說 path
通常會用 .
來表示目前這個目錄。不過直接用 build
會有生成的 Image 沒有命名的問題,所以一般大多是這樣使用。
docker build -t elct9620/mrb-compiler .
用 -t
表示 tag
來標記 Docker Image 的名稱和標先(如果想要指定成某個版本可以用 elct9620/mrb-compiler:1.2.0
來指定)並且指定 Dockerfile
在目前的目錄下。
有時候也會看到專案的目錄結構類似下面這樣。
這就表示專案下有多個 Docker Image 需要建置,也就是指定 path
的使用時機。
當我們製作完成 Docker Image 之後,就需要上傳到 Registery (儲存 Docker Image 的伺服器)這時候就需要使用這個指令。
docker push username/repoistory
規則上基本是一樣的,不過前置的 username
只能用自己的帳號當作名稱。
如果還沒有帳號,可以到 Docker Hub 註冊一個,或者使用自己架設的 Register 伺服器。
如果想上傳到自己的伺服器,可以改為下面的指令。
docker push server/username/repoistory
簡單說就治明確的指定伺服器的網址即可。
如此一來,我們就可以在 Concourse 裡面使用我們自己的 Docker Image 來當作自訂資源的基礎。
下一篇文章會介紹基本的 Dockerfile 寫法。