zoukankan      html  css  js  c++  java
  • Dockerfile(15)

    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

  • 相关阅读:
    windows程序设计第4章Text Output练习(831121)
    约瑟夫问题的递归公式
    哈希(hash)以及C++标准库哈希(std::hash)
    返回顶部的一段代码
    对于使用 UNIKON ALL 中表的顺序
    正则表达式的实际运用
    json.help
    省市区联动
    一个JS时间选择控件
    (转)C# Enum,Int,String的互相转换 枚举转换
  • 原文地址:https://www.cnblogs.com/poloyy/p/15476476.html
Copyright © 2011-2022 走看看