易商讯
当前位置: 首页 » 网络 » 科技 » 正文

云计算核心技术Docker教程:Docker 容器环境变量

放大字体  缩小字体 发布日期:2021-10-19 10:34:54
导读

当您链接容器时,Docker 会创建多个环境变量。Docker 会根据--link参数在目标容器中自动创建环境变量。它还从源容器中公开源自 Docker 的所有环境变量。这些包括来自以下方面的变量:1.ENV在源容器的Dockerfile命令2.-e,--env和--env-file在选择docker run 命令时,源容器开始这些环境变量支持从目标容器内以编程方式发现

当您链接容器时,Docker 会创建多个环境变量。Docker 会根据--link参数在目标容器中自动创建环境变量。它还从源容器中公开源自 Docker 的所有环境变量。这些包括来自以下方面的变量:

1.ENV在源容器的Dockerfile命令

2.-e,--env和--env-file在选择docker run 命令时,源容器开始

这些环境变量支持从目标容器内以编程方式发现与源容器相关的信息。

Docker_NAME为--link参数中列出的每个目标容器设置一个环境变量。例如,如果一个web名为dbvia的新容器 链接到一个名为via的数据库容器--link db:webdb,则 Docker 会WEBDB_NAME=/web/webdb在该web容器中创建一个变量。

Docker 还为源容器公开的每个端口定义了一组环境变量。每个变量都有一个唯一的前缀,格式如下:

_PORT__

此前缀中的组件是:

参数中指定的别名--link(例如,webdb)

暴露的数字

a是 TCP 或 UDP

Docker 使用这种前缀格式来定义三个不同的环境变量:

1.该prefix_ADDR变量包含来自 URL 的 IP 地址,例如WEBDB_PORT_5432_TCP_ADDR=172.17.0.82。

2.例如,该prefix_PORT变量仅包含来自 URL 的端口号WEBDB_PORT_5432_TCP_PORT=5432。

3.例如,该prefix_PROTO变量仅包含来自 URL 的协议WEBDB_PORT_5432_TCP_PROTO=tcp。

如果容器公开多个端口,则为每个端口定义一个环境变量集。这意味着,例如,如果一个容器公开 4 个端口,Docker 会创建 12 个环境变量,每个端口 3 个。

此外,Docker 创建了一个名为_PORT. 此变量包含源容器的第一个公开端口的 URL。“第一个”端口定义为具有最低编号的公开端口。例如,考虑WEBDB_PORT=tcp://172.17.0.82:5432变量。如果该端口同时用于 tcp 和 udp,则指定 tcp 之一。

最后,Docker 还将源容器中每个源自 Docker 的环境变量公开为目标中的环境变量。对于每个变量,Docker_ENV_在目标容器中创建一个变量。该变量的值设置为 Docker 在启动源容器时使用的值。

回到我们的数据库示例,您可以运行env 命令来列出指定容器的环境变量。

$ docker run --rm --name web2 --link db:db training/webapp env

可以看到 Docker 已经创建了一系列环境变量,其中db包含有关源容器的有用信息。每个变量都以 为前缀 DB_,它是根据alias您在上面指定的内容填充的。如果alias 是db1,则变量将以 为前缀DB1_。您可以使用这些环境变量来配置您的应用程序以连接到db容器上的数据库。连接是安全且私密的;只有链接的web容器才能与容器通信db。

 
(文/TechWeb编译)
免责声明
• 
本文云计算核心技术Docker教程:Docker 容器环境变量链接:http://www.esxun.cn/internet/26797.html 。本文仅代表作者个人观点,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们,我们将在24小时内处理完毕。如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
 

Copyright © www.esxun.cn 易商讯ALL Right Reserved


冀ICP备2023038169号-3