1. 程式人生 > >Dockerfile創建鏡像模板詳解

Dockerfile創建鏡像模板詳解

Docker 虛擬化 Dockerfile

Dockerfile是一個文本格式的配置文件,用戶可以使用Dockfile快速創建自定義的鏡像。
Dockerfile是由一行行的命令語句組成,並且支持以#開頭的註釋行。
vi Dockerfile
#一般而言,Dockerfile分為四部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動是執行的指令。
模板如下:

#This dockerfile uses the ubuntu image
#指定基於的基礎鏡像,可以使用多個FROM指令,每個鏡像一次
#FROM <image>或FROM <image>:<tag>

#MAINTAINER 指定維護者信息
#MAINTAINER UserName <[email protected]>

#ENV 指定一個環境變量,會被後續RUN指令使用,並在容器運行時保持。
#ENV <key> <value>

#RUN 鏡像的操作指令
#格式為RUN <command>或RUN ["executable","param1","param2"],前者將在shell終端中運行命令,即/bin/sh -c;後者則可使用exec執行。

#復制本地主機的<src>(為Docker所在目錄的相對路徑,文件或目錄)為容器中的<dest>。目標路徑不存在是,會自動創建。當使用本地目錄為源目錄是,推薦使用COPY。

#COPY <src> <dest>

#ENTRYPOINT,有兩種格式
#1.ENTRYPOINT ["executable","param1","param2"]
#2.ENTRYPOINT command param1 param2(shell中執行)
#每個Dockerfile只能有一個ENTRYPOINT,當指定多個時,如果指定多個ENTRYPOINT,只有最後一個生效。配置容器啟動後執行的命令,並且不可被docker run提>供的參數覆蓋。

#EXPOSE 告訴Docker服務端容器暴露的端口號,供互聯系統使用。

#EXPOSE <port> [<port>...]

#復制指定的<src>到容器中的<dest>,其中<src>可以使Dockerfile所在目錄的一個相對路徑(文件或目錄);也可以是一個URL;還可以是一個tar文件(自動解壓為目錄)。
#ADD <src> <dest>

#VOLUME 創建一個可以從本地主機或其他容器掛載的掛載點,一般用來存放數據庫和需要保持的數據等。
#VOLUME ["/data"]

#USER指定運行容器時的用戶名或UID,後續的RUN也會使用指定用戶。要臨時獲取管理員權限的時候要使用gosu,不推薦使用sudo。如果不指定,容器默認是root運行。
#USER daemon

#WORKDIR 為後續的RUN\CMD\ENTRYPOINT指令配置工作目錄,可以使用多個WORKDIR指令,後續命令如果參數是相對路徑,則會基於之前命令指定的路徑。
#WORKDIR /path/to/workdir
#例如: WORKDIR /a \ WORKDIR b \ WORKDIR b
#RUN pwd
#則最終路徑為/a/b/c

#ONBUILD 配置為所創建的鏡像作為其他新創建鏡像的基礎鏡像時,所執行的操作指令。使用ONBUILD指令的鏡像,推薦在標簽中註明,例如:nginx:1.9.11-onbuild。
#ONBUILD [INSTRUCTION]

#CMD 容器啟動時執行指令,支持三種格式
#1.CMD ["executable","param1","param2"]
#2.CMD command param1 param2在/bin/sh中執行,提供給需要交互的應用
#3.CMD ["param1","param2"]提供給ENTRYPOINT的默認參數
#如果指定多條,只有最後一條會被執行,如果用戶啟動容器時指定了運行的命令,則會覆蓋掉CMD指定的命令。

Dockerfile創建鏡像模板詳解