RUN 和 EXPOSE 其实就是指令的一种
CMD指令: 类似于RUN命令 但是RUN是构建镜像时所运行的命令 ,而CMD是指定容器要被启动时运行的命令。
但是如果在docker run 里面指定了要运行的命令 则CMD指令就会被覆盖。
注意:在Dockerfile里只能指令一条CMD指令,如果想要启动容易时同时运行多个进程或者多个指令,可以考虑类似Supervisor这样的服务管理工具。
ENTRYPONINT指令:
和CMD指令类似,不同的是,这个不会在容器启动时被覆盖。
比如ENTRYPOINT [''/usr/sbin/nginx", "-g", "daemon off;“]
精妙的是 这个命令可以和 CMD 一起使用 ,但是CMD 用于 ENTRYPOINT 之后时 CMD的默认指令是 entrypoint 之后的指令
想要覆盖的话 在docker run 时 加上 --entrypoint。
WORKDIR指令,在镜像创建一个新容易时,在容易内部设置一个工作目录,然后在这个目录下运行指令。
ENV指令,在镜像构建的时候设定环境变量,ENV指令后的RUN可能会受到环境变量的影响
VOLUME指令,用于像基于镜像的容器添加卷
ADD指令,在构建镜像时,将宿主机构建环境的文件和目录复制到镜像中
COPY指令,和ADD一样,只不过不会做提取和解压工作
ONBULD指令,是镜像添加触发器。这个还看不懂
有一点需要去查查:docker镜像的构建环境 ,build后面的点是怎么回事