Docker [2]

Dockerfile

Posted by ZYT on November 18, 2018

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 基础镜像