前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dockerfile(15) - ARG 指令详解

Dockerfile(15) - ARG 指令详解

作者头像
小菠萝测试笔记
发布2021-11-02 16:20:06
4.3K0
发布2021-11-02 16:20:06
举报

ARG

作用:定义创建镜像过程中使用的变量

格式: ARG <name>[=<default value>]

详解
  • 在执行 docker build 时,可以通过 来为声明的变量赋值

--build-arg <参数名>=<值>

  • 当镜像编译成功后,ARG 指定的变量将不再存在(ENV指定的变量将在镜像中保留)
  • Docker内置了一些镜像创建变量,用户可以直接使用而无须声明,包括(不区分大小写)HTTP_PROXY、HTTPS_PROXY、FTP_PROXY、NO_PROXY
ARG 和 ENV 的区别
  • ARG 定义的变量只会存在于镜像构建过程,启动容器后并不保留这些变量
  • ENV 定义的变量在启动容器后仍然保留
注意

不要通过 ARG 保存密码之类的信息,因为 docker history 还是可以看到所有值的

ARG 指令有生效范围

如果在 FROM 指令之前指定,那么只能用于 FROM 指令中

ARG DOCKER_USERNAME=library

FROM ${DOCKER_USERNAME}/alpine

RUN set -x ; echo ${DOCKER_USERNAME}
  • 使用上述 Dockerfile 会发现无法输出 ${DOCKER_USERNAME} 变量的值
  • 要想正常输出,必须在 FROM 之后再次指定 ARG
# 只在 FROM 中生效
ARG DOCKER_USERNAME=library

FROM ${DOCKER_USERNAME}/alpine

# 要想在 FROM 之后使用,必须再次指定
ARG DOCKER_USERNAME=library

RUN set -x ; echo ${DOCKER_USERNAME}

多阶段构建的时候,ARG 定义的变量,每个 FROM 都能用

# 这个变量在每个 FROM 中都生效
ARG DOCKER_USERNAME=library

FROM ${DOCKER_USERNAME}/alpine

RUN set -x ; echo 1

FROM ${DOCKER_USERNAME}/alpine

RUN set -x ; echo 2

ARG 其他用法

暂时不举例了,感觉应该不会用很多

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ARG
    • 详解
      • ARG 和 ENV 的区别
        • 注意
        • ARG 指令有生效范围
        • ARG 其他用法
        相关产品与服务
        容器镜像服务
        容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档