Docker 镜像构建基础
概述
Dockerfile
是一个用来构建镜像的文本文件,Dockerfile 由一行行命令语句组成,并且支持以#
开头的注释行。一般的,Dockerfile
分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。。
官方文档:Dockerfile reference
Dockerfile 示例:Dockerfile example
1 | # This dockerfile uses the ubuntu image |
Dockerfile
结构
Dockerfile
结构主要分为四部分:
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令(CMD/ENTERYPOINT)
注意:
Dockerfile
中的指令是不区分大小写的,但是最好还是按照约定的大小写来写。每条指令可携带多个参数(不支持&&),支持使用以#
开头的注释行。
常用 Dockerfile
指令
ARG
— 定义创建镜像过程中使用的变量,唯一一个可以在FROM
之前使用的指令。FROM
— 基于某个镜像,FROM
前只能有一个或者多个ARG
指令。MAINTAINER
— 指定维护者信息。(已弃用)。VOLUME
— 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等,可以在docker run
时使用-v
参数来挂载宿主机目录。RUN
— 在镜像中执行命令,可以执行多条命令,每条命令都会创建一个新的镜像层,并对镜像进行提交。COPY
— 将宿主机的文件复制到镜像中。ADD
— 将宿主机的文件复制到镜像中,支持URL
。ENV
— 设置环境变量。WORKDIR
— 为后续的RUN
、CMD
、ENTRYPOINT
指令配置工作目录。USER
— 指定运行容器时的用户名或UID
,后续的RUN
也会使用指定用户。。EXPOSE
— 暴露端口。CMD
— 容器启动时执行命令,只能有一个,如果有多个,只有最后一个生效。ENTRYPOINT
— 配置容器启动时执行的命令,ENTRYPOINT
会被CMD
覆盖。HEALTHCHECK
— 检查容器健康状态。ONBUILD
— 配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令。LABEL
— 为镜像添加元数据。