image.png

1.RUN

2.EXPOSE

3.FROM

4.CMD

CMD指令只能指定一条,指定多条只会执行最后一条,可以使用Supervisor工具执行多条
指定容器启动时要运行的命令,注意和RUN区分,RUN是镜像被构建的时候要运行的命令。CMD类似于docker run 指定的命令
格式:
CMD [“/bin/true”,”-l”] ====>在容器内执行的命令是 /bin/true -l
image.png
docker run 的指令会覆盖CMD指令,**覆盖,覆盖,真的覆盖!!!**

5.ENTRYPOINT
格式和CMD相同,但是不会被docker run 的指令覆盖。docker run的指令会被当做参数传给 ENTRYPOINT
可以在docker run 时添加 —entrypoint 标志覆盖ENTRYPOINT指令
image.png
和CMD组合使用
image.png

6.ADD

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

7.COPY

类似ADD,但是不会做文件提取和解压
如果目的文件路径不存在Docker会自动创建路径,但是mod是0755 UID和GID都是0(mkdir -p)

image.png image.png

8.VOLUME

向基于镜像创建的容器添加卷,卷可以是一个或者多个容器的特定的目录,这些卷可以绕过联合文件系统。
卷的功能:可以将数据,代码,数据库等添加到镜像中而不是提交到镜像中,并且可以在多个容器间共享卷的内容,可以用来测试容器和内部的程序代码,管理日志等
卷的特点:

  • 卷可以在容器间共享和重用。
  • 一个容器不是必须和其他容器共享卷。
  • 对卷的修改是即时生效的。
  • 对卷的修改不会对更新镜像产生影响。
  • 卷会一直存在知道没有任何容器使用它。

格式:
VOLUME [“/opt/project”,”/data”]
执行后再容器中生产对应路径的文件夹。

9.WORKDIR

相当于容器内的 cd-个人理解
在从镜像创建一个新容器的时候,在容器内部设置一个工作目录,ENTRYPOINT,/,CMD指定的程序将在这个目录下执行
docker run 时指定 -w 目录 参数覆盖WORKDIR
可以在特定目录下执行特定文件
image.png

10.USER

指定该镜像使用什么用户去运行,可以指定用户名/UID,组/GID,或者两者的组合。
image.png

11.ENV

在镜像构建过程中设置环境变量,ENV设定的环境变量可以在后续的任何RUN指令中执行,可以用反斜线转义。
在容器中执行的命令:变量名=变量值
dcoker run时指定 -e “变量名:变量值” 也可
设定的变量在容器中使用env查看
格式:
ENV 变量名 变量路径

12.ONBUILD

为镜像添加触发器,当一个镜像被用做其他镜像的基础镜像时,该镜像的触发器会被执行,但是只会被继承一次,子镜像的子镜像不会触发。触发器会在构建过程中插入新指令,这些指令会在FROM后执行,触发器可以使以上任意构建指令(ADD,RUN…)。