一、Dockerfile構建鏡像
1. Dockerfile概述
- 定義:Dockerfile是一個用于自動構建鏡像的文本文件,由一條條指令組成
- 工作原理:指令逐步執行,每個指令完成不同功能
- 典型指令示例:
- FROM centos:latest:基于指定鏡像構建
- LABEL maintalner lizhenliang:添加說明信息標簽
- RUN yum install gcc -y:執行安裝命令
- COPY run.sh /usr/bin:拷貝文件到鏡像
- EXPOSE 80:聲明容器服務端口
- CMD ["run.sh"]:啟動應用程序
2. Dockerfile常用指令
- 基礎指令:
- FROM:指定基礎鏡像,如FROM centos:7
- LABEL:添加元數據標簽
- RUN:執行shell命令,可連接多條命令用&&,如yum install epel-release && yum install nginx -y
- 文件操作:
- COPY:拷貝宿主機文件到鏡像
- ADD:解壓壓縮包并拷貝(比COPY多解壓功能)
- 環境配置:
- ENV:設置環境變量
- USER:指定運行命令的用戶
- WORKDIR:設置工作目錄
- 容器配置:
- EXPOSE:聲明服務端口(實際暴露需運行時指定)
- CMD:容器啟動時默認執行的命令(多個CMD時最后一個生效)
- 重要原則:
- 應用程序必須以前臺方式運行,不能使用后臺進程
- 參考官方鏡像寫法,如nginx使用CMD ["nginx", "-g", "daemon off;"]
3. 構建鏡像命令
- 基本命令:docker build -t 鏡像名:標簽 .
- 關鍵參數:
- -t:指定鏡像名稱和標簽
- -f:指定Dockerfile路徑(默認使用當前目錄下Dockerfile)
- 上下文路徑:
- 末尾的點.表示構建上下文路徑
- Dockerfile中所有文件操作都基于此路徑
- 構建過程:
- 會按步驟執行Dockerfile中的每條指令
- 每條指令都會生成一個中間層鏡像
- 構建失敗時可從上次成功步驟繼續
- 注意事項:
- 避免在容器中使用systemd等后臺服務管理工具
- 所有應用程序應以前臺方式運行(通過CMD指定)
- 參考官方鏡像的構建方式(如nginx官方鏡像)
二、知識小結
知識點 | 核心內容 | 考試重點/易混淆點 | 難度系數 |
Dockerfile概述 | 用于自動構建鏡像的文本文件,包含逐條指令 | 指令功能區分(如FROM、RUN、CMD) | ?? |
Dockerfile指令 | FROM引用基礎鏡像、RUN執行命令、COPY復制文件、EXPOSE聲明端口、CMD啟動應用 | CMD與ENTRYPOINT區別,RUN多命令寫法(&&連接) | ??? |
容器啟動原則 | 必須以前臺進程運行(如nginx -g 'daemon off;'),禁止使用systemd | 特權模式與常規模式差異,一號進程必要性 | ???? |
鏡像構建命令 | docker build -t <鏡像名> -f <Dockerfile路徑> . | 上下文路徑(.的含義),-y自動確認參數 | ?? |
Nginx鏡像示例 | 基于CentOS 7安裝Nginx并配置前臺啟動 | 官方鏡像參考,daemon off參數作用 | ??? |