介绍Dockerfile部分较为常用的语法,关于Docker常用命令参考Docker常用命令。
FROM ${IMAGE}[:${TAG}]- 仅且必须出现在Dockerfile的第一个指令,指定构建镜像的基础源镜像;
- 不填TAG时默认TAG为
latest;
MAINTAINER ${AUTHOR} ${EMAIL}- 记录构建镜像的作者及其邮箱的信息;
RUN ${COMMAND} ${PARAM}..- 每执行一次
RUN都会形成一层新的镜像,因为镜像只读,在后续命令里删除、卸载等操作无法影响前面已形成的镜像,因此体积也不会下降; - 因为每一个
RUN命令都会形成新的镜像,因此可以通过&&符号连接多条命令一次完成; - 执行的命令不继承原来的环境变量;
- 每执行一次
CMD ${COMMAND} ${PARAM}..- Dockerfile启动时的提供的默认命令;
- 只能有一个
CMD,写多个时最后一个生效,启动容器时用户提供了命令的话则此项会被覆盖而失效;
ENTRYPOINT ${COMMAND} ${PARAM}..- 同
CMD,但不会被用户启动容器时指定的CMD命令覆盖,如果要覆盖需要指定OPTION--entrypoint; - 同样只能有一个
ENTRYPOINT,写多个时最后一个生效;
- 同
EXPOSE ${CONTAINER_PORT}- 指定容器需要与外部进行映射的端口,允许使用多个
EXPOSE进行多端口映射,在启动添加OPTION-P时生效;
- 指定容器需要与外部进行映射的端口,允许使用多个
ENV ${KEY}=${VALUE}- 设置容器的环境变量,也可以提供给后面的
RUN命令使用; - 如需要一行设置多个环境变量时可以用空格分隔;
- 设置容器的环境变量,也可以提供给后面的
ARG ${KEY}- 设置构建镜像时需要使用的参数,
ARG ${KEY}=${VALUE}可以设置默认值; - 使用方式为在
docker build时通过--build-arg ${KEY}=${VALUE}传入参数;
- 设置构建镜像时需要使用的参数,
ADD ${SOURCE} ${DEST}- 把本地或者远程文件或文件夹复制到容器中;
- 如果传输的是压缩包则会自动解压;
COPY ${SOURCE} ${DEST}- 功能同
ADD,但不能处理网络文件,也不会自动解压压缩文件;
- 功能同
VOLUME ${PATH}- 指定容器内要挂载到主机的目录;
- 使用该方式时对应主机的目录是自动生成的,无法被指定;
- 可以在使用
docker run启动容器时通过OPTION-v的方式代替该方式;
USER ${USER_NAME}- 指定运行容器的用户;
WORKDIR ${PATH}- 为后续的
RUN、CMD、ENTRYPOINT命令指定容器内的工作目录;
- 为后续的
ONBUILD ${INSTRUCTION}- 配置该镜像被作为其它镜像的基础镜像时需要执行的命令;