3-3.8 Dockerfile 指令详解之二

上一篇文章介绍了Dockerfile指令详解之一,包括:

FROM 指定基础镜像

RUN 执行命令

COPY 复制文件

ADD 更高级的复制文件

CMD 容器启动命令

ENTRYPOINT 入口点

ENV 设置环境变量

目录

1. ARG 构建参数

2. VOLUME 定义匿名卷

3. EXPOSE 声明端口

4. WORKDIR 指定工作目录

5. USER 指定当前用户

6. HEALTHCHECK 健康检查

 7. ONBUILD 定制镜像

8. SHELL


上一篇文章介绍太详细,接下来将简单介绍:ARG 构建参数、VOLUME 定义匿名卷、EXPOSE 声明端口、WORKDIR 指定工作目录、USER 指定当前用户、HEALTHCHECK 健康检查、ONBUILD 定制镜像、SHELL 。

1. ARG 构建参数

指定一些镜像内使用的参数(如版本号信息等),这些参数在执行 docker build 命令时才以 --build-arg <key>=<value> 格式传入。

格式为 ARG <name> [=<default value>].

那么可以用 docker build --build-arg <key>=<value> 来指定参数值。

2. VOLUME 定义匿名卷

创建一个数据卷挂载点。

格式为 VOLUME ["/data"].

可以从本地主机或其他容器挂载数据卷,一般用来存放数据库和需要保存的数据等。

3. EXPOSE 声明端口

声明镜像内服务所监听的端口。

格式为 EXPOSE <port> [<port>...]

例如:

EXPOSE 22 80 8443

注意,该指令只是起到声明的作用,并不会自动完成端口映射。

在启动容器时需要使用 -P 。Docker主机会自动分配一个宿主机的临时端口转发到指定的端口;使用 -P ,则可以具体指定哪个宿主机的本地端口映射到容器中。

4. WORKDIR 指定工作目录

为后续的 RUN 、CMD和ENTRYPOINT 指令配置工作目录

格式为 WORKDIR /path/to/workdir​​​​​​ 。

可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径,例如:

WORKDIR /opt

WORKDIR stack

WORKDIR nova

RUN pwd

则最终路径为 /opt/stack/nova 。

5. USER 指定当前用户

指定运行容器时的用户名和UID,后续的 RUN 等指令也会使用指定的用户身份。

格式为 USER daemon

当服务不需要管理员权限时,可以通过该命令指定运行用户,并且可以在之前创建所需要的用户,例如:

RUN groupadd -r postgres && useradd -r -g postgres postgres 

要临时获取管理员权限可以使用 gosu 或 sudo。

6. HEALTHCHECK 健康检查

配置所启动容器如何进行健康检查(如何判断健康与否)。

格式有两种:

  • HEALTHCHECK [OPTIONS] CMD COMMAND:根据所执行的命令返回值是否为0来判断。
  • HEALTHCHECK NONE:禁止基础镜像中的健康检查。

OPTIIONS 支持:

  • --interval=DURATION (默认为30s):每隔多长时间检查一次。
  • --timeout=DURATION(默认为30s):每次检查等待结果的超时时间。
  • --retries=N(默认为3):若开始时就失败了,重试几次才最终确定失败。

 7. ONBUILD 定制镜像

配置当所创建的镜像作为其他镜像的基础镜像时,所至执行的创建操作指令。

格式为:ONBUILD [INSTRUCTIONS]

例如,Dockerfile使用如下的内容创建镜像 image-A。

[..]

ONBUILD ADD . /app/src

ONBUILD RUN /usr/local/bin/python-build --dir /app/src

[..]

如果基于 image-A 创建新的镜像时,新的Dockerfile 中使用 FROM image-A 指定基础镜像,会自动执行 ONBUIDL 指令的内容,等价于后面添加了两条指令:

FROM image-A

#当指定了ONBUILD创建的镜像时,会自动执行以下命令

ADD  . /app/src

RUN /usr/local/bin/python-build --dir /app/src

8. SHELL

指定其他命令使用shell 是默认的shell类型。

SHELL ["executable", "parameters"]

默认值为["/bin/sh", "-c"]。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值