以下為範例:
FROM ⇒ 選擇基本映像檔
- 為了安全性,請盡量選擇官方或開源的基本 image
- 固定 tag (版本),避免使用 latest
- 盡量選擇體積小的
RUN ⇒ 在 image 裡執行指令
- 主要用來安裝軟件,下載文件等
- 覆數命令另盡量用一次 RUN 就好,以優化最後生成的 image 分層 (可使用 image history 查看)
ADD ⇒ 複製本地指定檔案到 image 內的指定目錄 (會自動解壓縮)
- 文件權線也會被一併複製
- image 內指令路徑不存在則會自動創建
COPY ⇒ 複製本地指定檔案到 image 內的指定目錄(不會自動解壓縮)
- 文件權線也會被一併複製
- image 內指令路徑不存在則會自動創建
WORKDIR ⇒ 切換 image 內路徑
- image 內指令路徑不存在則會自動創建
ARG ⇒ 設定變數 (只供 Dockerfile build image 階段使用)
ENV ⇒ 設定環境變數 (可供後續 -it 引用)
CMD ⇒ 設置 container 啟動時執行的命令
- CMD 命令會從基礎 image 的 dockerfile 繼承下來,但是只有最後一個 CMD 會被執行
- 如果執行
docker container run
時指定命令,則 CMD 的命令會被取代
- CMD [] 的話會讓預設 image 命令被取消
ENTRYPOINT ⇒ 設置 container 啟動時執行的命令
- 跟 CMD 原理一樣,但是 ENTRYPOINT 不可以被取代
USER ⇒ 指定使用者
VOLUME ⇒ 指定資料卷來存儲容器檔案
EXPOSE ⇒ 告訴使用者可以用哪個 port 來做映射
ex: EXPOSE 5000
這樣就是告訴使用者可以使用 5000 port 來進行映射
這樣就可以
docker run -p 5000:5000
來映射