FORM
指定base镜像
MAINTAINER
设置镜像的作者,可以是任意字符串。
COPY
将文件从 build context 复制到镜像。
COPY 支持两种形式:
COPY src dest
COPY ["src", "dest"]
注意:src 只能指定 build context 中的文件或目录。
ADD
和copy类似,从build context复制文件到镜像。不同的是,如果src是归档文件(tar,zip,tgz等),文件会自动解压到 dest。
ENV
设置环境变量,环境变量可被后面的指令使用。例如
ENV __VERSION 1.3
RUN apt-get install -y package=$__VERSION
EXPOSE
指定容器中的进程会监听某个端口,Docker可以将该端口暴露出来。
VOLUME
将文件或目录声明为volume
WORKDIR
为后面的RUN,CMD,ENTRYPOINT,ADD或COPY指令设置镜像中的当前工作目录。
RUN
在容器中运行指定的命令。
CMD
在容器启动时运行的命令
DOCKERFILE中可以有多个CMD指令,但只有最后一个生效,CMD可以被docker run 之后的参数代替。
ENTRYPOINT
设置容器启动时运行的命令。
Dockerfile 中可以有多个 ENTRYPOINT 指令,但只有最后一个生效。CMD 或 docker run 之后的参数会被当做参数传递给 ENTRYPOINT。
USER
指定当前用户
USER 指令和 WORKDIR 相似,都是改变环境状态并影响以后的层。WORKDIR 是改变工作目录,USER 则是改变之后层的执行 RUN, CMD 以及 ENTRYPOINT 这类命令的身份。
当然,和 WORKDIR 一样,USER 只是帮助你切换到指定用户而已,这个用户必须是事先建立好的,否则无法切换。
RUN groupadd -r redis && useradd -r -g redis redis
USER redis
RUN [ "redis-server" ]
HEALTHCHECK
健康检查
RUN,CMD,ENTRYPOINT区别
RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包。
CMD 设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换。
ENTRYPOINT 配置容器启动时运行的命令。