【日常记录-Docker】ARG与ENV

复制代码
Author:赵志乾
Date:2024-08-02
Declaration:All Right Reserved!!!

1. 简介

ARG主要用于构建时的参数传递,不会保留在生成的镜像中,适用于需要根据不同构建条件动态调整构建过程的场景;

ENV主要用于设置容器运行时的环境变量,这些变量会保留在生成的镜像中,并且在容器启动时可用,适用于需要在容器内部配置应用程序或脚本的场景;

2. 使用方式

2.1 ARG
  • 语法:ARG <name> [=<default_value>]
  • 在Dockerfile中以${变量名}的形式引用ARG定义的变量
  • 可以在构建镜像时通过--build-arg选型为ARG指令设置值,这个值将覆盖Dockerfile中定义的默认值
2.2 ENV
  • 语法:ENV <key> <value> 或 ENV <key>=<value> <key2>=<value2> ...<keyn>=<valuen>
  • 在容器内部可以以{变量名}或变量名的形式引用ENV设置的环境变量
  • 可以在运行容器时通过-e或--env选项为应用程序设置额外的环境变量,但这些变量不会覆盖ENV在Dockerfile中设置的环境变量,除非它们具有相同的key

3. 示例

复制代码
# 定义一个构建时变量  
ARG HTTP_PREFIX=/usr/local/apache2  
# 使用变量来配置Apache的文档根目录(仅在构建过程中有效)  
RUN echo "DocumentRoot ${HTTP_PREFIX}/htdocs" > /etc/apache2/apache2.conf


# 设置环境变量  
ENV NAME=World  
# 在容器内部使用环境变量  
CMD echo "Hello, $NAME!"
相关推荐
zwjapple12 小时前
阿里云配置了加速器还是访问不了docker.io的解决方案。
阿里云·docker·云计算
LCG元12 小时前
Docker容器化实战:将你的SpringBoot应用一键打包部署,告别环境不一致的烦恼!#第一部分
后端·docker
迎風吹頭髮13 小时前
Linux内核架构浅谈60-Linux块设备驱动:请求队列与BIO结构的交互流程
linux·运维·交互
TG_yunshuguoji13 小时前
阿里云代理商:阿里云负载均衡是什么?
运维·服务器·阿里云·云计算
七夜zippoe13 小时前
Xshell效率实战系列五:大文件传输封神技——断点续传+压缩传输双buff拉满
运维
你总是一副不开心的样子(´ . .̫ .14 小时前
关于监控与部署
云原生·容器·kubernetes
剑小麟14 小时前
windows系统安装wls/Ubuntu子系统教程
linux·运维·ubuntu
wanhengidc14 小时前
云手机和云游戏的不同之处
运维·服务器·安全·游戏·智能手机
终焉代码14 小时前
【Linux】基本指令(入门篇)(下)
linux·运维·服务器
我也想失去烦恼18 小时前
Linux系统/etc/hosts文件中配置了主机解析,但还是无法解析ip
linux·运维·服务器