dockerfile详解
Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速构建自定义的镜像。
dockerfile基本结构
dockerfile一般分为四部分:
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
dockerfile基本命令
FROM命令,选择一个基础镜像,如果有多个,可以使用多个from
1
FROM <image> 或 FROM <image>:<tag>
MAINTAINER命令,说明作者信息
1
MAINTAINER <name> <email>
RUN命令,RUN指令将在当前镜像基础上执行指定命令
1 2
RUN <command> RUN ["executable","param1","param2"]
cMD命令,指定启动容器时执行的命令,每个Dockerfile只能有一条CMD命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器的时候指定了运行的命令,则会覆盖掉CMD指定的命令
1 2 3 4
支持三种格式: CMD ["executable","param1","param2"]使用exec执行,推荐方式。 CMD command param1 prarm2 在/bin/sh中执行,提供给需要交互的应用 CMD ["prarm1","param2"]提供给ENTRYPOINT的默认参数
EXPOSE命令,暴露容器端口
1
EXPOSE <port> <port> ...
ENV命令,指定环境变量
1
ENV <key> <value>
ADD命令,复制宿主机文件或目录到容器中,其中src可以是Dockerfile所在目录的一个相对路径(文件或目录),也可以是一个URL,还可以是一个tar文件
1
ADD <src> <dest>
COPY命令,复制本地主机的src为容器中的dest,目标路径不存在时,会自动创建
1
COPY <src> <dest>
ENTRYPOINT命令,配置容器启动后执行的命令,并且不可被docker run 提供的参数覆盖。每个Dockerfile中只能有一个ENTRYPOINT,当指定多个ENTRYPOINT时,只有最后一个生效。
1 2
ENTRYPOINT ["executable","param1","param2"] ENTRYPOING command param1 param2 (shell中执行)
VOLUME命令,创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
1
VOLUME ["/data"]
USER命令,指定运行容器时的用户名或UID,后续的RUN也会使用指定用户
1
USER daemon
WORKDIR命令,为后续的RUN、CMD、ENTRYPOINT指令配置工作目录,可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。
1
WORKDIR /path/to/workdir
ONBUILD命令,配置当所创建的镜像作为其他新创建镜像的基础镜像时,所执行的操作指令
1
ONBUILD [INSTRUCTION]
Dockerfile构建java环境镜像
创建Dockerfile文件
|
|
构建镜像
|
|
运行容器
|
|
构建noname镜像
使用本地jdk创建,首先将jdk-8u144-linux-x64.tar.gz,放到Dockerfile同一个文件夹下
|
|