用前端姿式玩docker【二】dockerfile定製鏡像初體驗

目錄

前言

書接上文,關於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

  • 建立數據掛載點 VOLUME ["/data"]

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 指令用來指定啓動容器時默認執行的命令
  • 支持三種格式:
  1. CMD ["executable", "param1", "param2"]:至關於執行 executable param1 param2, 此方式較爲推薦;
  2. CMD command paraml param2 :在默認的 Shell 中執行,提供給須要交互的應用;
  3. 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/
相關文章
相關標籤/搜索