Dockerfile 指令
FROM
MAINTAINER
RUN
ADD
COMPY
VOLUME
EXPOSE
USER
ENV
WORKDIR
CMD
ENTRYPOINT
ONBUILD
FROM
FROM <Images:Tag>
FROM 必须是 Dockerfile 中非注释行的第一个指令
FROM 指定构建镜像的基础源镜像,如果本地不存在源镜像,会自动通过
pull
从 Docker 的公共库下载FROM 可以在一个 Dockerfile 中出现多次
如果没有指定镜像标签,则默认使用
latest
标签
MAINTAINER
MAINTAINER <Name>
指定创建镜像的用户
RUN
RUN <Command>
RUN 在当前镜像的基础上执行指定命令,并提交为新镜像。镜像是分层的,可以通过镜像的任何一个历史提交点来创建,类似源码的版本控制
RUN 产生的缓存在下一次构建的时候是不会失效的,会被重用,在使用
docker build
命令时可以增加--no-cache
选项来禁止使用缓存
ADD
ADD <src> <dest>
复制本地主机文件、目录或者远程文件 URLs 到镜像中
src 必须是 Dockerfile 所在的相对路径。如果是目录,则只复制其内容,目录本身不会被复制
dest 必须是镜像中的绝对路径
COPY
COPY <src> <dest>
复制本地主机文件或目录到镜像中。用法同
ADD
,唯一不同是不能指定远程文件 URLs
VOLUME
VOLUME ["/data"]
创建一个可以从本地主机或其他容器挂载的挂载点
EXPOSE
EXPOSE <port> [<port>...]
端口映射。需要在
docker run
时使用-p 或 -P
参数生效
USER
USER <UserName>
指定运行容器时的用户名或 UID,后续的 RUN、CMD、ENTRYPOINT 也会使用指定用户
ENV
ENV <key> <value> # 设置一个环境变量
ENV <key>=<value> ... # 可以设置多个环境变量
设置环境变量,后续 RUN 指令会使用,并在容器运行时保留
WORKDIR
WORKDIR </path/to/workdir>
指定工作目录,后续命令如 RUN、CMD、ENTRYPOINT 使用相对路径时,则会基于该工作目录
CMD
CMD command param1 param2(shell form)
CMD "command", "param1", "param2"
CMD "param1", "param2"
CMD 指定容器在启动时默认执行的命令。如果用户在启动容器时指定了运行的命令,则会覆盖掉 CMD 指定的
CMD 只在容器启动时执行,而 RUN 是在容器构建过程中执行
Dockerfile 中如果有多条 CMD 指令,则只会执行最后一条
ENTRYPOINT
ENTRYPOINT command param1 param2(shell form)
ENTRYPOINT "command" "param1" "param2"(exec form)
指定容器启动后执行的命令,并且不可被
docker run
提供的参数覆盖,而 CMD 是可以被覆盖的。如果需要覆盖,可以使用docker run --entrypoint
选项每个 Dockerfile 只有最后一个 ENTRYPOINT 会被使用
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
通过 ENTRYPOINT 设置稳定的默认命令和选项,通过 CMD 添加默认之外经常被改动的选项
ONBUILD
ONBILD [INSTRUCTION]
指定当创建的镜像作为其他新创建镜像的基础镜像时,所执行的命令
参考:
Docker 学习笔记:
https://www.docker.org.cn/dockerppt/114.html