1. 程式人生 > >Docker製作映象的兩種方式

Docker製作映象的兩種方式

(一)docker commit方法

  • 定義
    • 每一次commit都是往版本控制系統裡提交一次變更(軟體安裝和修改)。
  • 步驟
    • (1)啟動容器:docker run container_old;
    • (2)進入容器:docker exec -it -d container_old /bin/bash;
    • (3)自定義映象內容;
    • (4)commit映象:docker commit container_old container_new:tag;
    • (5)執行映象:docker run -d -it container_new:tag;
      • container_old:原docker容器名稱;
      • container_new:現docker容器名稱;
      • tag:自定義版本號;
  • 缺點
    • 容器內部操作,效率較低;
    • 黑箱操作,沒有操作記錄,不易維護;
    • 映象會隨著修改的增加,越來越龐大;

(二)docker build方法(利用dockerfile檔案,推薦)

  • 定義
    • build命令根據給定的Dockerfile和上下文以構建Docker映象;
  • 步驟
    • (1)Dockerfile檔案(由命令列組成,支援#註釋)
      • From:指定基礎映象(必須為第一條指令);
      • Run:構建容器時執行指定的命令;注意:多行命令不要寫多個RUN,原因是Dockerfile中每一個指令都會建立一層。多少個RUN就構建了多少層映象,會造成映象的臃腫、多層
        ,不僅僅增加了構件部署的時間,還容易出錯。RUN書寫時的換行符是\
      • CMD:容器啟動時需要執行的命令(只允許有一條CMD命令);
      • Label:為映象指定標籤;
      • Maintainer:指定作者;
      • Expose:暴露容器執行的監聽埠;
      • Env:設定環境變數;
      • Add:把檔案複製到映象中,其中src可以是本地檔案或url;
      • Copy:複製命令,src只允許為本地檔案;
      • Entrypoint:啟動時的預設命令;
      • Workdir:設定工作目錄;
      • ...
    • (2)Docker build ImageName FilePath/DockerfileName;
    • (3)Docker run -d -it ImageName;
  • 構建原則
    • 映象用途集中、單一;
    • 選擇合適的基礎映象
    • 完整的註釋資訊;
    • 標註版本號;
    • 減少映象層數;
    • 刪除臨時檔案和快取檔案;
    • 合理的指令順序;

參考連結