# # 什么是dockerFile 呢
用我们熟悉的java来举例子把: hello.java 编译后是 hello.class 字节码文件
docker 就是 编译后机器能够识别的 images 的描述文件
dockerFile 是用来构建docker镜像的构建文件,由命令参数构成的脚本
# #镜像构建的流程
# # 自己不会写dockerFile怎么办
看下别人写的dockeFile ,先贴一个 git 的地址
https://github.com/CentOS/sig-cloud-instance-images/blob/d9560a37644faaeac50162582f82a5ee920dc37e/docker/Dockerfile
以centos 7 为例,看看dockerFile 是怎么写的
FROM scratch
ADD centos-7-x86_64-docker.tar.xz /
LABEL org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20191001"
CMD ["/bin/bash"]
# # 详细解析 dockerFile
一起来看 dockerFile 都是什么
FROM scratch 可以类比我们的 java 汇总的 class Object ,scratch 就是docker 所有镜像的父类
# # dockerFile 书写规则
保留字指令要大写,后边有空格,后边必须有内容。 比如 FROM scratch
指令从上往下依次执行
# 代表注释
每条指令都会创建一个新的镜像层
# # dockerFile 保留字
FROM :代表当前镜像基于哪个镜像的
MAINTAINER :是作者名字 ,和邮箱
RUN :容器构建时要运行的命令
EXPOSE :当前容器对外暴露的端口号
WORKDIR :进去以后的首先所在的路径
ENV :用来构建镜像时设置环境变量
ADD : 拷贝镜像,并解压缩
VOLUME :容器数据卷,用来持久化数据
CMD :指定一个容器启动时要运行的命令,dokerFile 里边可以有多个,但是最后一个生效
ENIRYPOINT :指定一个容器启动时要运行的命令,可以有多个,命令都生效。
ONBUILD :相当于是触发器,当容器被继承后,出发事件。
# # 一个 dockerFile 的 练习案例
https://blog.csdn.net/star1210644725/article/details/104222174