管理貨櫃的碼頭工人-- Docker (二)

管理貨櫃的碼頭工人-- Docker (二)

Dockerfile 是什麼?

簡單來說,它是一個描述 Docker Image 如何建立的過程,描述的方法有點類似像安裝說明文件一樣。下面是一個 Dockerfile 範例:

管理貨櫃的碼頭工人-- Docker (二)

在撰寫 Dockerfile 的時候,關鍵字通常會用全大寫,如上面的例子是 FROM MAINTAINER RUN 三個。後面接的就是執行的內容,每個 Dockerfile 都一定會有一個 FROM ,它代表 Image 要從哪開始做起。 MAINTAINER 是標示 Dockerfile 維護者。 RUN 是執行 shell 指令,上面有兩個 RUN ,第一個是用 apt 安裝 zip extension ,第二個是安裝 PHP Composer 。

看完這個 Dockerfile 應該可以猜得出來,它描述瞭如何建置有 Composer 的 Docker Image 。實際建置的指令如下:

管理貨櫃的碼頭工人-- Docker (二)

這樣就建好了一個有 Composer 的 Docker Image 了,來試 run 看看:

管理貨櫃的碼頭工人-- Docker (二)

補充說明: --rm 指的是每次執行完指令,容器就刪除; Image 名稱後面接的是指令,所以也可以接 composer 或 ls 等等。

如何從頭寫一個 Dockerfile

寫 Dockerfile 並不難,做起來就很像是給一臺空的機器,再安裝需要的軟體和設定,最後就會成為一個符合需求的 Docker Image 。

比方說我們想要一個可以執行 Gulp 的 Image ,首先應該會想到的是,我們需要 Node 。因此第一步要上 Docker Hub 找有沒有 Node , Node 這麼熱門當然官方有提供 Image 。因此我們決定好版本後,就可以開始寫第一行了:

管理貨櫃的碼頭工人-- Docker (二)

寫好一行之後,這時要開始發揮 CI 精神了!要先驗證嘛!因此先 build 再執行看看,有沒有 node 我們可以執行 node -v 試試:

管理貨櫃的碼頭工人-- Docker (二)

有看到版本了!再來 Gulp 可以用 package.json 安裝,也可以用 -g 全域安裝,那我們要的是一個可以全域執行 Gulp 的 Image ,所以使用全域安裝好了:

管理貨櫃的碼頭工人-- Docker (二)

這次應該就可以用 gulp -v 了!

管理貨櫃的碼頭工人-- Docker (二)

接著我們就可以用這樣的方法來執行 Gulp 的任務了:

管理貨櫃的碼頭工人-- Docker (二)

今天學習了怎麼使用 Docker 建置屬於自己的環境,這樣就可以把家裡許多服務都容器化,但接著該如何管理它們呢?



分享到:


相關文章: