Dockerfile中的ARG指令详解

Dockerfile中的ARG指令用以定义构建时需要的参数,使用格式如下:

ARG a_name
ARG a_nother_name=a_default_value

ARG指令定义的参数,在docker build命令中以--build-arg a_name=a_value形式赋值。

如果docker build命令传递的参数,在Dockerfile中没有对应的参数,将抛出如下警告:

[Warning] One or more build-args [foo] were not consumed.

如果在Dockerfile中,ARG指令定义参数之前,就有其他指令引用了参数,则参数值为空字符串。
不建议在构建的过程中,以参数的形式传递保密信息,如key, password等。


Docker自带的如下ARG参数,可以在其他指令中直接引用:

  • HTTP_PROXY
  • http_proxy
  • HTTPS_PROXY
  • https_proxy
  • FTP_PROXY
  • ftp_proxy
  • NO_PROXY
  • no_proxy

参考链接:

https://docs.docker.com/engine/reference/builder/

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dockerfile 是用于构建 Docker 镜像的一种文本格式,包含了一系列指令来描述如何构建镜像。Dockerfile 的编写需要遵循一定的规范,包括指令、注释、变量和环境变量等。下面是 Dockerfile 进阶详解: 1. 使用 ARG 指令定义变量 使用 ARG 指令可以定义一个变量,可以在后续指令使用。例如: ``` ARG VERSION=latest FROM ubuntu:${VERSION} ``` 在构建镜像时可以使用 --build-arg 参数来指定变量的值,例如: ``` docker build --build-arg VERSION=18.04 . ``` 2. 使用 ENV 指令定义环境变量 使用 ENV 指令可以定义环境变量,可以在容器运行时使用。例如: ``` ENV TZ=Asia/Shanghai ``` 3. 使用 WORKDIR 指令定义工作目录 使用 WORKDIR 指令可以定义工作目录,可以在容器运行时使用。例如: ``` WORKDIR /app ``` 4. 使用 COPY 和 ADD 指令复制文件 使用 COPY 和 ADD 指令可以复制本地文件到镜像。COPY 只能复制本地文件,ADD 还支持 URL 和 tar 包的复制。例如: ``` COPY index.html /var/www/html/ ADD http://example.com/file.tar.gz /tmp/ ``` 5. 使用 CMD 和 ENTRYPOINT 指令定义容器启动命令 使用 CMD 和 ENTRYPOINT 指令可以定义容器启动命令,其 ENTRYPOINT 可以和 CMD 配合使用。例如: ``` ENTRYPOINT ["/bin/sh", "-c"] CMD ["echo", "Hello World"] ``` 6. 使用 EXPOSE 指令定义端口 使用 EXPOSE 指令可以定义容器监听的端口,但并不会自动映射到主机。例如: ``` EXPOSE 80 ``` 7. 使用 FROM 指令选择基础镜像 使用 FROM 指令可以选择基础镜像,可以使用特定的版本或者 latest。例如: ``` FROM ubuntu:18.04 ``` 8. 使用 RUN 指令执行命令 使用 RUN 指令可以在镜像执行命令。例如: ``` RUN apt-get update && apt-get install -y nginx ``` 9. 使用 LABEL 指令定义元数据 使用 LABEL 指令可以定义镜像的元数据,可以用于查询和过滤镜像。例如: ``` LABEL maintainer="John Doe <john.doe@example.com>" ``` 以上是 Dockerfile 进阶的一些指令和用法,可以帮助你更好地构建镜像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值