Dockerfile文件分为四部分:基础镜像信息,维护者信息,操作指令,容器启动执行指令。
基础镜像信息
eg:
# 1、第一行必须指定 基础镜像信息
# 这里指定基础镜像为 ubuntu
FROM ubuntu
docker ci服务根据这条指令拉取镜像作为一次层。
维护者信息
# 2、维护者信息
MAINTAINER docker_user
操作指令
# 3、镜像操作指令
RUN apt-get update && apt-get install -y nginx
当拉取完基础镜像后,镜像就会执行我们编写的指令
每一条运行指令将会增加一层次
容器启动执行指令
# 4、容器启动执行指令
CMD ["nginx","-g","daemon off;"]
完整的Dockerfile
FROM ubuntu
MAINTAINER withqianqian
RUN apt-get update && apt-get install -y nginx
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
在dockerfile目录下执行 docker build -t mynginx .
启动自己制作的nginx容器 docker run -d -p 80:80 mynginx
在浏览器访问localhost 就能看到效果了。
构建时缓存
Dockerfile文件中的每条指令会被独立执行,并会创建一个中间镜像,当重新生成新的镜像时会运用缓存中的中间镜像来加快镜像的构建。
Dockerfile 指令
- ENTRYPOINT 用于给容器配置一个可执行程序
- LABEL 用于为镜像添加元数据
- EXPOSE 用于指定容器在运行时监听的端口
- ENV 用于设置环境变量
- ADD 用于复制构建环境中的文件或目录到镜像中
- COPY 同样用于复制构建环境中的文件或目录到镜像中
- VOLUME 用于创建挂载点
- USER 用于指定运行镜像所使用的用户
- WORKDIR 用于在容器内设置一个工作目录
- ARG 用于指定传递给构建运行时的变量
- ONBUILD 用于设置镜像触发器
- STOPSIGNAL 用于设置停止容器所要发送的系统调用信号
- SHELL 用于设置执行命令(shell式)所使用的的默认shell类型
总结
以上就Dockerfile基础的东西,大家多多练习熟练使用。