docker學習總結八

使用Dockerfile創建鏡像
一般Dockerfile分爲四部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啓動時的指令
1. 指令說明

指令 說明
FROM 指定所創建鏡像的基礎鏡像
MAINTAINER 指定維護者信息
RUN 運行命令
CMD 指定啓動容器時默認執行的命令
LABEL 指定生成鏡像的元數據標籤信息
EXPOSE 聲明鏡像內服務所監聽的端口
ENV 指定環境變量
ADD 複製指定的<src>路徑下的內容到容器中的<dest>路徑下,<src>可以爲URL;如果爲tar文件,會自動解壓到<dest>路徑下。
COPY 複製指定的<src>路徑下的內容到容器中的<dest>路徑下; 一般情況推薦使用COPY,而不是ADD
ENTRYPOINT 指定鏡像的默認入口
VOLUME 創建數據卷掛載點
USER 指定運行容器時的用戶名或UID
WORKDIR 配置工作目錄
ARG 指定鏡像內使用的參數(例如版本號信息等)
ONBUILD 配置當所創建的鏡像作爲其他鏡像的基礎鏡像時,所執行的創建操作指令
STOPSIGNAL 容器退出的信號值
HEALTHCHECK 如何進行健康檢查
SHELL 指定使用shell時的默認shell類型

2. 創建鏡像
編寫完成Dockerfile之後,執行docker build命令來創建鏡像。
基本格式爲 docker build [選項] 內容路徑
如果要制定生成鏡像的標籤信息,可以使用-t選項。
docker build -t myfirstimage ./
3. 使用.dockerignore文件
使用.dockerignore文件(每行添加一條匹配模式)來讓Docker忽略匹配模式路徑
# comment
/temp
//temp
tmp?
~

  1. 最佳實踐
    精簡鏡像用途:儘量讓每個鏡像的用途都比較集中、單一,避免構造大而複雜、功能多的鏡像;
    選用合適的基礎鏡像:過大的基礎鏡像會造成生成臃腫的鏡像,一般推薦較爲小巧的debian鏡像;
    提供足夠清晰的命令註釋和維護者信息:Dockerfile也是一種代碼,需要考慮方面後續擴展和其他人使用;
    正確使用版本號:使用明確的版本號信息,如1.0,2.0,而非latest,將避免內容不一致可能引發的慘案;
    減少鏡像層數:如果希望所生成的鏡像層數儘量少,則儘量合併指令,例如多個RUN指令可以合併成一條

    及時刪除臨時文件和緩存文件:特別是在執行apt-get指令後,/var/cache/apt下面會緩存一些安裝包;
    提高生成速度: 如合理使用緩存,減少內容目錄下的文件,或使用.dockerignore文件指定等;
    調整合理的指令順序:在開啓緩存的情況下,內容不變的指令儘量放在前面,這樣可以儘量複用;
    減少外部源的干擾: 如果確實要從外部引入數據,需要指定持久的地址,並帶有版本信息,讓他人可以重複而不出錯。****

小結:
φ(❐❐✧ 人醜就要多讀書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章