Docker製作映象的兩種方式
阿新 • • 發佈:2018-12-26
(一)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就構建了多少層映象,會造成映象的臃腫、多層
- 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;
- (1)Dockerfile檔案(由命令列組成,支援#註釋)
- 構建原則
- 映象用途集中、單一;
- 選擇合適的基礎映象;
- 完整的註釋資訊;
- 標註版本號;
- 減少映象層數;
- 刪除臨時檔案和快取檔案;
- 合理的指令順序;