Dockerfile 概念
Dockerfile
是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
Dockerfile 文件格式
# 1、第一行必须指定 基础镜像信息
FROM ubuntu
# 2、维护者信息
MAINTAINER docker_user docker_user@email.com
# 3、镜像操作指令
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
# 4、容器启动执行指令
CMD /usr/sbin/nginx
指令详解
- FROM 指定基础镜像
- RUN 执行命令
- COPY 复制文件
- ADD 更高级的复制文件,比如 URL
- ENV 设置环境变量
- EXPOSE 设置监听端口
- VOLUME 创建挂载点
- WORKDIR 指定工作目录
- USER 指定当前用户
- CMD 指定在容器启动时所要执行的命令
- ENTRYPOINT 给容器配置一个可执行程序
- LABEL 为镜像添加元数据
- ARG 指定传递给构建运行时的变量
- ONBUILD 设置镜像触发器
- STOPSIGNAL 设置停止容器所要发送的系统调用信号
- SHELL 设置执行命令所使用的的默认 shell 类型
构建镜像
docker build .
与 .gitignore
类型,可以通过 .dockerignore
文件排除上下文目录下不需要的文件和目录
镜像标签
docker build -t nginx/v3 .
可以使用多个 -t
参数
缓存
构建缓存仅会使用本地父生成链上的镜像,如果不想使用本地缓存的镜像,也可以通过 --cache-from
指定缓存。指定后将不再使用本地生成的镜像链,而是从镜像仓库中下载。
减小镜像大小
- 通过多阶段构建,将多个层压缩为一个
- 小体积的 Alpine 基础镜像