Dockerfile
FROM
FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]
# platform 指定镜像的系统架构,如linux/amd64、linux/arm64、windows/amd64,默认与构建镜像的平台一致FROM 指令设置基础镜像,镜像在基础镜像上进行构建
# 在centos7.6.1810镜像基础上构建新镜像
FROM centos:7.6.1810RUN
RUN <command>
RUN ["executable", "param1", "param2"]RUN 命令执行命令并创建新的镜像层,通常用于安装软件包
# 打印hello
RUN echo hello
RUN ["/bin/bash", "-c", "echo hello"]
# 安装httpd并清除缓存
RUN set -eux; \
yum -y update ; \
yum install -y httpd ; \
yum clean allCMD
CMD 命令设置容器启动后默认执行的命令及其参数,但 CMD 设置的命令能够被docker run命令后面的命令行参数替换
每个 Dockerfile 中只能有一个 CMD,当指定多个时,只有最后一个起效
注意:
Docker 容器启动时,默认会把容器内部第一个进程,也就是
pid=1的程序,作为 docker 容器是否正在运行的依据,如果 docker 容器 pid=1 的进程挂了,那么 docker 容器便会直接退出。
ENTRYPOINT
ENTRYPOINT 配置容器启动时的执行命令(不会被忽略,一定会被执行,即使运行 docker run时指定了其他命令)
每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效
LABEL
LABEL 指令为镜像添加元数据
EXPOSE
EXPOSE 指令暴露容器的端口
ENV
ENV 指令设置镜像构建过程中的环境变量
WORKDIR
WORKDIR 指令设置工作目录
ADD
ADD 指令拷贝本地资源或 url 资源到镜像,复制目录时,目录本身不会被复制,只是其内容被复制。本地资源为压缩包时,会解压文件,url 资源不会
COPY
COPY 指令拷贝本地资源到镜像,复制目录时,目录本身不会被复制,只是其内容被复制。
VOLUME
VOLUME 指令将宿主机本地目录挂载到镜像的指定目录,默认是本地/var/lib/docker/volumes/***
USER
USER 指令指定后续命令使用此用户进行,如 RUN、CMD 等。镜像构建完成后,通过 docker run 运行容器时,可以通过-u 参数来覆盖所指定的用户
ARG
ARG 指令定义一个变量,用户可以在docker build时,添加--build-arg <varname>=<value> 参数将变量传递给构建器
使用ENV指令定义的环境变量 始终会覆盖ARG指令的同名变量
ONBUILD
ONBUILD 是一个特殊的指令,它后面跟的是其它指令,比如 RUN, COPY 等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行
STOPSIGNAL
HEALTHCHECK
SHELL
最后更新于