docker配置容器——环境变量

很多时候,我们需要为运行在容器中的应用程序提供一些配置。配置通常用于允许同一个容器在完全不同的环境中运行,例如开发、测试或生产环境。在 Linux 中,配置值通常通过环境变量提供。我们已经了解到,在容器内运行的应用程序与其主机环境完全隔离。因此,我们在主机上看到的环境变量与我们在容器内看到的环境变量是不同的。

让我们看看主机上的定义来证明这一点:

1. 使用此命令可显示为终端会话定义的所有环境变量列表:

export

2. 接下来,让我们在 Alpine 容器中运行一个 shell:

docker container run --rm -it alpine /bin/sh

需要提醒的是,我们使用 --rm 命令行参数是为了在停止运行后不必移除悬空容器,有关悬空容器的清理,可以查看我的文章:保持docker环境干净-CSDN博客 

3. 用这条命令列出我们可以看到的环境变量

export

前面的输出结果与我们直接在主机上看到的结果不同。

4. 退出容器

按 Ctrl + D 离开并停止alpine容器

为容器定义环境变量

我们可以在启动时向容器传递一些配置值。我们可以使用--env(或简称-e)参数,其形式为--env <key>=<value> ,其中 <key> 是环境变量的名称,<value> 代表与该变量相关联的值。假设我们希望在容器中运行的应用程序能够访问名为 LOG_DIR 的环境变量,其值为 /var/log/my-log。我们可以使用这条命令来实现这一目的:

docker container run --rm -it \
    --env LOG_DIR=/var/log/my-log \
    alpine /bin/sh

 前面的代码在 Alpine 容器中启动了一个 shell,并在运行的容器中定义了所请求的环境。为了证明这一点,我们可以在 Alpine 容器中执行这条命令:

export | grep LOG_DIR

输出结果符合预期。现在,我们可以在容器中使用正确值的环境变量了。当然,在运行容器时,我们可以定义不止一个环境变量。我们只需重复使用--env(或-e)参数即可。请看这个示例:

docker container run --rm -it \
    --env LOG_DIR=/var/log/my-log \
    --env MAX_LOG_FILES=5 \
    --env MAX_LOG_SIZE=1G \
    alpine /bin/sh

 运行上述命令后,我们将看到 Alpine 容器内的命令提示符,让我们用以下命令列出环境变量:

export | grep LOG

使用配置文件

复杂的应用程序可能会有许多环境变量需要配置,因此我们运行相应容器的命令很快就会变得笨重。为此,Docker 允许我们以文件形式传递环境变量定义集合。为此,我们在 docker 容器运行命令中使用了 --env-file 参数。

定义配置文件development.config,内容如下

LOG_DIR=/var/log/my-log
MAX_LOG_FILES=5
MAX_LOG_SIZE=1G

 注意我们是如何以 <key>=<value> 的格式在每行定义一个环境变量的,其中 <key> 是环境变量的名称,<value> 代表与该变量相关联的值。

使用配置文件

运行一个 Alpine 容器,将该文件作为环境配置文件传送,然后在容器内运行 export 命令来验证文件中列出的变量是否确实已在容器内创建为环境变量,就像这样:

docker container run --rm -it \
    --env-file ./development.config \
    alpine sh -c "export | grep LOG"

正如我们在生成的输出中看到的那样,变量确实已被定义:

 这正是我们所期望的。

以上便是在容器配置环境变量的方式,分别是在容器运行时通过—env进行配置;另一个便是通过一个配置文件进行配置,希望对你有所帮助,有关docker的基础的内容,可以通过以下课程进行学习:Docker 实战_在线视频教程-CSDN程序员研修院

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/756413.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快手正式推出Vision Pro版本,引领虚拟现实社交新潮流

6月28日&#xff0c;快手正式推出其专为Apple Vision Pro打造的版本——快手vp版app&#xff0c;成为国内首批登陆Apple Vision Pro的短视频平台。 借助先进的虚拟现实技术&#xff0c;用户可以在快手上体验更真实生动的视频内容&#xff0c;无论是观看趣味短视频内容&#xf…

Ubuntu20.04安装Prometheus监控系统

环境准备&#xff1a; 服务器名称内网IP公网IPPrometheus服务器192.168.0.23047.119.21.167Grafana服务器192.168.0.23147.119.22.8被监控服务器192.168.0.23247.119.22.82 更改主机名方便辨认 hostnamectl set-hostname prometheus hostnamectl set-hostname grafana hostn…

电脑文件夹里的表格删除了怎样恢复?别急,可这样做

在日常工作中&#xff0c;我们经常会使用到各种电子表格来记录、整理和分析数据。然而&#xff0c;有时由于操作失误或其他原因&#xff0c;我们可能会不小心将电脑文件夹中的重要表格删除。面对这种情况&#xff0c;许多人可能会感到惊慌失措&#xff0c;担心数据丢失会给工作…

【wsl2】WIN11借助wsl2挂载ext4磁盘

我有一块ext4文件系统的硬盘&#xff0c;想要在win11上访问&#xff0c;我们可以通过wsl2进行挂载 wsl2的安装就跳过了&#xff0c;可以自行搜索安装。 安装完成后 >>> GET-CimInstance -query "SELECT * from Win32_DiskDrive"通过这个命令&#xff0c;可…

2024下半年必追国漫片单,谁将问鼎巅峰?

随着2024年上半年的落幕&#xff0c;国漫市场再度迎来了百花齐放的盛况。从经典续作到全新IP&#xff0c;从玄幻到科幻&#xff0c;每一部作品都以其独特的魅力吸引着观众的目光。本期为大家盘点下半年值得一看的国漫佳作&#xff0c;大胆预测&#xff0c;谁将成为这场神仙打架…

STM32开发方式的演变与未来展望

一、STM32开发方式的演变 自2007年STM32微控制器首次亮相以来&#xff0c;其开发方式经历了从寄存器到标准库&#xff0c;再到HAL&#xff08;硬件抽象层&#xff09;的演变。 1.寄存器开发&#xff08;2007年-2010年代初&#xff09; 最初&#xff0c;由于初期缺乏足够的软…

基于NURBS曲线的数据拟合算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1NURBS曲线基础 4.2 数据拟合原理 5.完整程序 1.程序功能描述 基于NURBS曲线的数据拟合算法,非均匀有理B样条&#xff08;Non-Uniform Rational B-Splines&#xff0c;简称NURBS&#xf…

探究电子电路中的电压与电平转换

1. 引言 昨天跟好朋友讨论一个项目的时候,我朋友就给我画了一个简化版的电路图&#xff0c;如下图所示&#xff1a; 总觉得这个电路怪怪的&#xff0c;clk信号怎么直接接稳压电路呢。就产生了一个疑问&#xff0c;电平转换和电压转换的区别是啥&#xff1f;稳压电路还有升降压…

endswith()方法——是否以指定子字符串结尾

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 endswith()方法用于检索字符串是否以指定子字符串结尾。如果是则返回True&#xff0c;否则返回False。endswith()方法的语法格式如下&…

查看Windows启动时长

&#xff08;附图片&#xff09;电脑自带检测开机时长---查看方式_电脑开机时长命令-CSDN博客 eventvwr - Windows日志 - 系统 - 查找 - 6013.jpg

Gradio 4.37.1官方教程二:Blocks

文章目录 一、Blocks及事件监听器1.1 Blocks结构1.2 事件监听器的类型1.3 多数据流1.4 多输入组件1.5 多输出组件1.6 更新组件配置1.7 添加示例1.8 连续运行事件1.9 持续运行事件1.9.1 every参数1.9.2 load方法1.9.3 change方法 1.10 收集事件数据1.11 绑定多个触发器到同一函数…

stthjpv:一款针对JWT Payload的安全保护工具

关于stthjpv stthjpv是一款针对JWT Payload的安全保护工具&#xff0c;这款工具集多种技术和思想于一身&#xff0c;可以通过不断改变相关参数值来防止Payload被解码&#xff0c;以帮助广大研究人员更好地保护JWT Payload的安全性。 除此之外&#xff0c;该工具还能够确保JWT …

Vulnhub-DC 9

信息收集 arp-scan -l发现192.168.119.155 IP 段扫描端口 --服务22 端口 — 80 端口 这里22端口有一个&#xff08;filtered&#xff09;过滤的保护先针对80端口进行一个查看这是一个员工详细表 -----那就是说可以查看员工信息 发现一个查询框和一个登录框 1&#xff1a;查…

信息系统项目管理师(项目整合管理)

项目的复杂性来源于组织的系统行为&#xff0c;人类行为以及组织或环境中的不确定性。在项目整合前&#xff0c;项目经理需要考虑项目面临的内外部环境因素&#xff0c;检查项目的特征或属性。作为项目的一种特征或熟悉&#xff0c;复杂性的含义&#xff1a;包含多个部分&#…

武汉星起航:一站式服务,助力亚马逊卖家高效运营,实现收益飞跃

在跨境电商的浪潮中&#xff0c;武汉星起航电子商务有限公司以其独特的一站式跨境电商服务&#xff0c;为众多亚马逊卖家提供了强有力的支持&#xff0c;助力他们在不断发展的市场中脱颖而出&#xff0c;实现收益的大幅提升。 武汉星起航的一站式跨境电商服务&#xff0c;以其…

【一生一芯】笔记

文章目录 一级目录二级目录三级目录缓存的验证 一级目录 二级目录 三级目录 缓存的验证

Linux 的启动流程

第一步、加载内核 操作系统接管硬件以后&#xff0c;首先读入 /boot 目录下的内核文件。 以我的电脑为例&#xff0c;/boot 目录下面大概是这样一些文件&#xff1a; $ ls /bootconfig-3.2.0-3-amd64config-3.2.0-4-amd64grubinitrd.img-3.2.0-3-amd64initrd.img-3.2.0-4-amd6…

为什么word生成的PDF内容显示不全?

在现代办公环境中&#xff0c;将文档从一个格式转换为另一个格式是一个常见的任务。然而&#xff0c;有时候我们可能会遇到意想不到的问题&#xff0c;比如使用Word转换成PDF时&#xff0c;生成的PDF文件只显示了整个界面的四分之一内容。这种问题不仅令人困扰&#xff0c;也可…

【React】代码简化与拓展安装

安装如下拓展&#xff1a; 只需敲击rcc即可搭建框架

操作系统期末复习考题二

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、正文☀️☀️☀️三、总结&#x1f353;&#x1f353;&#x1f353; 一、前言&#x1f680;&#x1f680;&am…