885
阿裏雲
Dockerfile 支持的指令__構建管理_用戶指南_容器服務-阿裏雲
有用戶容易將 Dockerfile 文件內的指令理解為 shell 腳本,其實並不是,Dockerfile 僅支持少部分的指令,下麵介紹這些指令和功能。
FROM
FROM <image>
或者
FROM <image>:<tag>
或者
FROM <image>@<digest>
指定構建依賴的基礎鏡像,FROM
指令必須作為 Dockerfile 中第一條沒有被注釋的指令。
MAINTAINER
MAINTAINER <name>
指定鏡像的 Author
字段。
RUN
shell 形式,command
作為 /bin/sh -c
的參數進行執行,即為 shell 的子進程。
RUN <command>
exec 形式,直接執行。
RUN ["executable", "param1", "param2"]
RUN 指令是在當前鏡像上執行命令,並且提交執行之後的結果,作為最新的一層 layer,並且後續的 Dockerfile 指令會在 RUN 指令執行完生成的最新鏡像上繼續執行。
CMD
exec 形式,直接執行,推薦使用該形式。
CMD ["executable","param1","param2"]
第二種形式,作為ENTRYPOINT
指令的默認參數。
CMD ["param1","param2"]
第三種形式,shell形式,作為/bin/sh -c
的參數進行執行,即為 shell 的子進程。
CMD command param1 param2
在一個 Dockerfile 文件中,隻能有一個CMD
指令,如果有多於一條CMD
指令,那隻有最後一條CMD
指令會生效。
CMD
指令的主要目的是提供容器運行時的默認值,這些默認值可以包括一個可執行文件名,加上執行時的一些參數,或者不包含可執行文件名,隻提供參數,但是必須通過增加一個ENTRYPOINT
指令來指定可執行文件名。
LABEL
LABEL <key>=<value> <key>=<value> <key>=<value> ...
LABEL
指令給一個鏡像增加元信息metadata
。一個LABEL
是一個鍵值對。如果LABEL
值中需要包含空格或者換行符,使用雙引號"
或者反斜杠。
下麵是一些用例:
LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates
that label-values can span multiple lines."
EXPOSE
EXPOSE <port> [<port>...]
EXPOSE
指令設置 Docker 容器在運行時監聽指定網絡端口。EXPOSE
指令並不會使得容器所在的主機可以訪問容器的端口。為了使主機可以訪問容器端口,必須使用 -p 或者 -P 參數。
ENV
ENV <key> <value>
ENV <key>=<value> ...
ENV
指令設置鏡像的環境變量,可在實際啟動容器時使用docker run --env <key>=<value>
進行覆蓋。
ADD
有兩種形式:
ADD <src>... <dest>
第二種形式用於路徑或者文件名包含空格的情況。
ADD ["<src>",... "<dest>"]
如果src
是文件路徑,則必須是相對於構建上下文context
的相對路徑,且不能引用構建上下文目錄之外的內容。dest
必須是絕對路徑,或者是工作路徑WORKDIR
的相對路徑。如果dest
不存在,則將自動創建,如果dest
不以/
結尾,則將被認為是一個文件,而不是目錄。
COPY
有兩種形式:
COPY <src>... <dest>
第二種形式用於路徑或者文件名包含空格的情況。
COPY ["<src>",... "<dest>"]
與ADD
類似,區別在於src
不能是網絡鏈接 URL。
ENTRYPOINT
exec 形式,推薦使用該形式。
ENTRYPOINT ["executable", "param1", "param2"]
shell 形式,command
作為/bin/sh -c
的參數進行執行,即為 shell 的子進程。
ENTRYPOINT command param1 param2
ENTRYPOINT
指令允許您指定容器啟動時的啟動進程。
VOLUME
VOLUME ["/data"]
VOLUME
指令指定了一個掛載點,並給該掛載點命名,表明該掛載點的數據卷來自於主機的某個目錄或者共享了其他容器的目錄,該掛載點的內容不會隨鏡像的分發而分發。
USER
USER daemon
USER
指令設置啟動鏡像時的用戶或者UID
,隨後所有在Dockerfile
文件內的RUN
,CMD
以及ENTRYPOINT
指令都將該用戶作為執行用戶。
WORKDIR
WORKDIR /path/to/workdir
WORKDIR
指令設置工作目錄,隨後所有在Dockerfile
文件內的RUN
,CMD
以及ENTRYPOINT
指令都將該目錄作為當前目錄,並執行相應的命令。
最後更新:2016-11-23 16:03:52
上一篇:
構建容器鏡像__構建管理_用戶指南_容器服務-阿裏雲
下一篇:
常用 Docker 相關軟件下載加速__構建管理_用戶指南_容器服務-阿裏雲
添加思考時間__腳本開發_Lite用戶使用手冊_性能測試-阿裏雲
日誌級別設置__腳本開發_Lite用戶使用手冊_性能測試-阿裏雲
搭數服務協議__相關協議_平台介紹_數加平台介紹-阿裏雲
取消遷移__數據遷移_API 參考_雲數據庫 RDS 版-阿裏雲
新建測試___Lite用戶使用手冊_性能測試-阿裏雲
基本參數__圖片水印_老版圖片服務手冊_對象存儲 OSS-阿裏雲
怎樣為一個子用戶授予隻讀訪問SLB的權限___負載均衡(SLB)授權問題_授權常見問題_訪問控製-阿裏雲
連接實例七要素的獲取方法__快速入門_雲數據庫 MongoDB 版-阿裏雲
數據庫專家現場保障__工作說明書_尊享服務_支持計劃-阿裏雲
Pig 作業配置__作業_用戶指南_E-MapReduce-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲