1.RUN
2.EXPOSE
3.FROM
4.CMD
CMD指令只能指定一条,指定多条只会执行最后一条,可以使用Supervisor工具执行多条
指定容器启动时要运行的命令,注意和RUN区分,RUN是镜像被构建的时候要运行的命令。CMD类似于docker run 指定的命令
格式:
CMD [“/bin/true”,”-l”] ====>在容器内执行的命令是 /bin/true -l
docker run 的指令会覆盖CMD指令,**覆盖,覆盖,真的覆盖!!!**
5.ENTRYPOINT
格式和CMD相同,但是不会被docker run 的指令覆盖。docker run的指令会被当做参数传给 ENTRYPOINT
可以在docker run 时添加 —entrypoint 标志覆盖ENTRYPOINT指令

和CMD组合使用
6.ADD
将构建上下文或者URL中的文件或者目录复制到镜像中,如果源文件是归档文件(gzip,xz,bzip2.tar.gz),Docker会自动解压文件
ADD会使缓存失效
格式:
ADD 源文件地址(构建上下文中) 目的文件地址(容器内)
源文件可以是URL 例:
目的文件地址以 / 结尾时会认为目的文件是文件夹,否则认为是文件,如果目的文件路径不存在Docker会自动创建路径,但是mod是0755 UID和GID都是0 (mkdir -p)
7.COPY
类似ADD,但是不会做文件提取和解压
如果目的文件路径不存在Docker会自动创建路径,但是mod是0755 UID和GID都是0(mkdir -p)

8.VOLUME
向基于镜像创建的容器添加卷,卷可以是一个或者多个容器的特定的目录,这些卷可以绕过联合文件系统。
卷的功能:可以将数据,代码,数据库等添加到镜像中而不是提交到镜像中,并且可以在多个容器间共享卷的内容,可以用来测试容器和内部的程序代码,管理日志等
卷的特点:
- 卷可以在容器间共享和重用。
- 一个容器不是必须和其他容器共享卷。
- 对卷的修改是即时生效的。
- 对卷的修改不会对更新镜像产生影响。
- 卷会一直存在知道没有任何容器使用它。
格式:
VOLUME [“/opt/project”,”/data”]
执行后再容器中生产对应路径的文件夹。
9.WORKDIR
相当于容器内的 cd-个人理解
在从镜像创建一个新容器的时候,在容器内部设置一个工作目录,ENTRYPOINT,/,CMD指定的程序将在这个目录下执行
docker run 时指定 -w 目录 参数覆盖WORKDIR
可以在特定目录下执行特定文件
10.USER
指定该镜像使用什么用户去运行,可以指定用户名/UID,组/GID,或者两者的组合。
11.ENV
在镜像构建过程中设置环境变量,ENV设定的环境变量可以在后续的任何RUN指令中执行,可以用反斜线转义。
在容器中执行的命令:变量名=变量值
dcoker run时指定 -e “变量名:变量值” 也可
设定的变量在容器中使用env查看
格式:
ENV 变量名 变量路径
12.ONBUILD
为镜像添加触发器,当一个镜像被用做其他镜像的基础镜像时,该镜像的触发器会被执行,但是只会被继承一次,子镜像的子镜像不会触发。触发器会在构建过程中插入新指令,这些指令会在FROM后执行,触发器可以使以上任意构建指令(ADD,RUN…)。
