一、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参数作用 |
⭐⭐⭐ |