目錄
前言
書接上文,關於dockerfile指令的api在此處不作贅述,在此只是記錄下注意事項: ‘示坑以埋之’。html
配置指令
FROM
- dockerfile必須以此開頭
- 一個dockerfile可執行添加多個FROM
ARG
- 單純的docker build執行過程的局部變量,在容器內部會被銷燬
- 經常使用來定義常量數據,例如版本等等
LABEL
- label的做用只是用來便於作搜索推薦、提示等,相似元信息、元標籤。
- 多個label多行展現
LABEL name=tate
LABEL area=China
EXPOSE
- 只聲明鏡像內監聽的服務端口,不作映射處理
EXPOSE 22 80 8443
ENV
- 環境變量,在後續RUN中被調用,容器中會被保留。
ENV APP_HOME=/usr/local/app
- 若遇到相同變量,在Run命令中會被覆蓋掉
docker run --env APP_HOME=/usr/local/app
ENTRYPOINT
# ENTRYPOINT ["executable", "paraml ", "param2"]: exec 調用執行;
# ENTRYPOINT command param 1 param2: shell 中執行。
- 指定鏡像的默認入口命令,該入口命令會在啓動容器時做爲根命令執行, 全部傳人值做爲該命令的參數。
- CMD指定的值將做爲根命令的參數傳遞
- 單個dockerfile中定義多個入口時,只有最後一個生效。
- 一樣可被run中的 --entrypoint 參數覆蓋
VOLUME
USER
- 指定運行容器的user,須要獲取管理員臨時權限時使用gosu命令
WORKDIR
- 爲後續的 RUN CMD ENTRYPO INT 指令配置工做目錄
- 多行命令執行結果累加, 建議使用絕對路徑
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
# 結果爲 /a/b/c
ONBUILD
- 基於所生成鏡像建立子鏡像時,自動執行的操做指令。
- 使用 docker build 命令建立子鏡像 childImage 時( FROM ParentImage ),會首先執行 Parent mage 配置的 ONBUI LD,至關於在子鏡像的dockerfile中添加相應的指令。
- 主要用於建立專門用於自動編譯、檢查等操做的基礎鏡像。
STOPSIGNAL
HEALTHCHECK
- 配置所啓動容器如 進行健康檢查
HEALTHCHECK [OPTIONS] CMD command :根據所執行命令返回值是否爲0判斷
HEALTHCHEC NONE : 禁止基礎鏡像中的健康檢查
OPTION 支持以下參數
—interva=DURAT (d e fault: 30s ):過多久檢查一次
—timeout=DURATION (default: 30s): 每次檢查等待結果的超時;
—retries=N (default:3 ):若是失敗了,重試幾回才最終肯定失敗
SHELL
- 指定其餘命令使用 shell 時的默認 shell 類型
- 默認值
SHELL ["/bin/sh", "-c"]
- windows 系統中,shell 使用了「\」做爲分隔符,建議在 Dockerfile 開頭添加#escape=' 指定轉義符
操做指令
RUN
- 格式爲 RUN <command >或 RUN [ "executable " , "paraml", "param2"] 注意意後者指令會被解析爲 JSON 數組,所以必須用雙引號,前者默認將在 shell 終端中運行命令,即 '/bin/bash -c' 後者則使用 exec 執行,不會啓動 shell 環境。
- 指定使用默認終端
RUN ["/bin/bash", "-c", "echo tate"]
- 每執行一條RUN命令, 鏡像就會被追加一個鏡像層,其實就是一個RUN命令就是一個獨立的執行結果
CMD
- CMD 指令用來指定啓動容器時默認執行的命令
- 支持三種格式:
- CMD ["executable", "param1", "param2"]:至關於執行 executable param1 param2, 此方式較爲推薦;
- CMD command paraml param2 :在默認的 Shell 中執行,提供給須要交互的應用;
- CMD ["param1", "param2"]: 提供給 ENTRYPOINT 的默認參數
ADD
- 添加指定路徑下的內容到容器中 ADD
- src可爲文件目錄,也可爲url,或一個tart文件(自動解壓爲目錄)
- dest可使絕對路徑,也能夠是相對於當前工做目錄的相對路徑
COPY
- 複製內容到路徑 COPY
, 多用於本地目錄爲源目錄時。
- src 爲dockerfile所在目錄的相對路徑
- 目標路徑不存在時會自動建立
- 路徑支持正則表達式
體驗嚐鮮
基於alpine定製
FROM alpine
ARG author=tate
RUN touch /root/docker.txt
COPY copy.sh /root/