【日常记录-Docker】ARG与ENV

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

1. 简介

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

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

2. 使用方式

2.1 ARG
  • 语法:ARG <name> =\
  • 在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!"
相关推荐
红姐跨境书1 小时前
Facebook账号频繁被要求验证怎么办?从登录异常到浏览器环境排查
运维·服务器
flytalei1 小时前
GitOps 实战:基于 Argo CD 的 Kubernetes 应用版本回滚
云原生·容器·kubernetes
月落汀兰1 小时前
服务器出问题没人告警?Zabbix6.0 LNMP 部署,MySQL 监控 + 邮件告警保姆级实战
运维·服务器·zabbix
运维踩坑日记1 小时前
【无标题】
linux·运维·windows
xiaoyunxuexibiji1 小时前
供应商绩效评价体系如何建立?从评价指标到自动化考核
运维·人工智能·自动化
Z21-X1 小时前
云原生运维学习笔记:从云计算概念到服务器硬件的入门之旅
运维·笔记·学习·云原生
虚无的纽扣1 小时前
【Linux】线程(下):怎么创建、终止与分离一个线程
linux·运维·服务器
pirateeee2 小时前
在ubuntu中通过 docker 搭建 yocto 开发环境
ubuntu·docker·eureka
墨神谕2 小时前
Docker 数据卷(Volume)详解:Dockerfile 声明、Docker Compose 挂载宿主机目录及持久化实战
运维·docker·容器
zh73142 小时前
Docker Desktop docker_data.vhdx 使用时间长了过大,解决办法
运维·docker·容器