1.Dockerfile 概述:
Dockerfile 可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。主要作用是用来构建docker镜像的构建文件。
通过Dockerfile 文件构建一个属于自己的镜像。
1.1 Dockerfile 构建命令:
docker build -t 镜像名:版本号 .Dockerfile文件所在位置
1.2 Dockerfile 构建镜像流程:
2.Dockerfile 文件解析:
https://docs.docker.com/engine/reference/builder/
2.1 Dockerfile 基础知识:
- 每条保留字指令都必须为大写,且后面都要跟至少一个参数。
- 指令按照从上到下,顺序执行。
- #表示注释
- 每条指令都会创建一个新的镜像层,并对镜像进行提交。
Dockerfile用于构建Docker镜像,Dockerfile文件是由一行行命令语句组成,基于这些命令即可以构建一个镜像,比如下面就是一个Dockefile文件样例:
## Dockerfile文件格式 # This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command] .. # 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
2.2 Dockerfile 组成:
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
2.3 Dockerfile 指令:
所有指令的执行都是基于 Dockerfile的上下文路径(也就是Dockerfile 当前目录位置开始)!!!
FROM 指令:
Dockerfile文件的第一条指令必须为FROM指令。并且,如果同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)。
FROM <image> FROM<imge>:<tag>
MAINTAINER 指令:
指定维护者信息(已经废弃)
MAINTAINER <name>
RUN 指令:
RUN指令将当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时可以使用 \ 来换行。
RUN <command>
EXPOSE 指令:
暴露的端口更像是指明了该容器提供的服务需要用到的端口,EXPOSE 并不会直接将端口自动和宿主机某个端口建立映射关系。(仅仅是声明暴露的端口)
EXPOSE <port>[<port>...]
WORKDIR 指令:
WORKDIR 文件路径
ENV 指令:
指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持。使用 $Key 对 Value值进行引用。
ENV <key> <value> ENV <key>=<value>
ADD 指令:
复制指定的<src>到容器<dest>,ADD指令 + URL 会自动下载文件。
ADD <src> <dest>
COPY 指令:
复制指定的<src>到容器<dest>
COPY <src> <dest>
VOLUME 指令:
VOLUME 目录路径
CMD 指令:
指定启动容器时执行的命令,每个Dockerfile只能有一调CMD命令。如果指定了多个命令,只有最后一条会被执行。如果用户启动容器时候,只有最后一条会被执行。如果用户启动容器时执行了运行命令,则会覆盖掉CMD指定的命令。
CMD 指令
ENTRYPOINT 指令:
指定启动容器时执行的命令
ENTRYPOINT 指令