如何做個簡單的 Docker Image

這幾年,Docker 這個容器技術可說是被炒得火紅,成了資訊界熱門的關鍵字,每個工程師深怕不學就準備失業。但其實也不用過度擔心,要入門 Docker 並沒有相像中的難(當然要管理大量的 container 就是另一個故事了),本篇文章會先著重在建立 image 檔的指令上。

Docker 的 image 也可以稱它為映像檔,它是 container 的基礎,container 是建立在映像檔上的資料層,所以當你建立了一個 container 然後把它底下的映像檔給刪掉,這個 container 就無法運作了。

而網路上有千千萬萬的映像檔,稍微搜尋一下,大概就可以找到合用的。不過只是用別人建立好的,總還是會遇到不太合用或是想自己加些客製化東西的情況,這時就得自己建立映像檔了。

要建立映像檔,首先要建立一個 Dockerfile 檔案,把指令寫在裡面,底下是一個簡單的範例:

FROM ubuntu:14.04
MAINTAINER sholfen
WORKDIR /
Run mkdir source_code
RUN apt-get update && apt-get -y install git
WORKDIR source_codek
Run git clone https://github.com/sholfen/dmhy_rss_getter.git

簡單說一下上面的指令在做什麼,其實就是以 ubuntu image 為基礎,在根目錄建立 source_code 資料夾,接下來透過 apt-get 安裝 git,然後切換至 source_code 資料夾,然後 clone github 上 https://github.com/sholfen/dmhy_rss_getter.git 的原始碼。

所以第一行的 FROM 就是指定要以哪個 image 為基礎,MAINTAINER 則是作者名字(隨便寫),WORKDIR 則是指令執行時的所在位置,把它當一般的 cd 指令也可以。而 Run 就是要執行的 Linux 指令,最後底下列出常用的指令:

  • FROM
    • Base image,格式:[image name]:[tag]
  • MAINTAINER
    • 作者名字
  • RUN
    • 建立映像檔時所要執行的指令,格式:RUN [command]
  • CMD
    • 容器啟動時執行的指令,只會執行一個
    • 寫法有下列兩種:
      • CMD [“command", “parameter1″, “parameter2″]
      • CMD command parameter1 parameter2,在 shell 中執行
  • EXPOSE
    • 要對外開放的 port,可指定多個,以空格分離,格式:EXPOSE [port]
  • ENV
    • 設定環境變數,格式:ENV [variable] [value]
  • ENTRYPOINT
    • 容器啟動後所要執行的指令,格式與 CMD 指令相同
  • VOLUME
    • 建立可掛載的目錄,格式為:VOLUME [“/path"]
  • WORKDIR
    • 指定 RUM、CMD、ENTRYPOINT 的執行目錄
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s