迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 > Docker >

在 Docker 中向容器传递环境变量

作者:迹忆客 最近更新:2023/03/22 浏览次数:

本文将介绍在 Docker 中将环境变量传递给容器的方法。

使用 -e-env 标签将环境变量传递给 Docker 中的容器

我们将首先了解如何创建环境变量并将它们传递给容器。我们将首先使用以下命令从 Docker 注册表中提取我们将使用的映像。

$ docker pull ubuntu~$ docker pull ubuntu

输出:

Using default tag: latest
latest: Pulling from library/ubuntu
08c01a0ec47e: Pull complete
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

我们将使用 -e 标签,-env 的简写形式,可以通过在终端中运行命令 docker run -help 检查其用法。这个参数允许我们创建多个环境变量的键值对来传递给容器。

这是我们如何创建单个环境变量并将其传递给我们使用 Ubuntu 映像创建的容器的方法。

$ docker run -it -e DEMO=sample_variable ubuntu bash

输出:

root@3a20bc21d3c8:/# echo $DEMO
sample_variable

我们还可以使用 -e 的多个标签来创建环境变量,只需在创建新容器时将它们与运行命令链接起来,如下所示。

$ docker run -it -e DEMO1=sample_variable1 -e DEMO2=sample_variable2 ubuntu bash

一旦我们传递了这两个环境变量,我们就可以使用下面的命令访问它们的值。我们将变量一命名为 DEMO1,我们可以在下面访问它的值。

root@9eee00d7ab01:/# echo $DEMO1

输出:

sample_variable1

同样,我们也可以打印出变量二,如下所示。

root@9eee00d7ab01:/# echo $DEMO2

输出:

sample_variable2

使用导出命令将环境变量传递给 Docker 中的容器

或者,我们也可以通过使用 export 命令避免将环境变量链接在一起。此命令是 Linux bash shell 的内置实用工具,也可与 WSL 一起使用。

它允许我们创建环境变量并将其传递给子进程,而不会影响预先存在的变量。我们将从创建环境变量开始,如下所示。

isaac@DESKTOP-HV44HT6:~$ export MYSQL_USER=isaactonyloi
isaac@DESKTOP-HV44HT6:~$ export MYSQL_PASS=fakepassword

一旦我们创建了环境变量,我们就可以将它们传递给我们正在创建的容器,如下所示。

$ docker run -it -e MYSQL_USER -e MYSQL_PASS ubuntu bash

然后,我们可以使用命令 echo 命令访问和显示变量的相应值,如下所示。

root@5b4dae06932d:/# echo $MYSQL_USER
isaactonyloi

使用 -env 文件将环境变量传递给 Docker 中的容器

为你提供更多调试空间的更好方法是改用 Docker 分解文件。这意味着我们现在不必在启动 docker 容器时直接传递环境变量。

这种方法意味着我们必须创建一个包含环境变量的外部 .env 文件。我们可以使用下面的 Linux 命令在我们的主目录中创建这个文件。

此命令选择进入 Linux vi 编辑器,创建我们的环境变量列表。

$ vi env.list

在 vi 编辑器中,我们将创建环境变量作为键值对,其中键为大写,其各自的值为小写。我们将退出,通过按完整的冒号并输入 wq command 来保存变量。

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

wq

我们可以使用 ls 命令来确认文件 env.list 是否已成功保存。这应该返回该目录中的文件列表,其中列出了 env.list

我们还可以使用 cat 命令查看该列表中的条目,如下所示。

$ cat env.list

输出:

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

一旦我们有了它,我们现在可以运行 ubuntu 映像来创建新容器并指定我们存储变量的路径以将它们传入。

在本例中,env.list 文件存储在主目录中。因此,如果你的目录位于另一个目录中,你的路径可能看起来不同。

我们应该运行命令将这些环境变量传递给新容器。

$ docker run -it --env-file ./env.list ubuntu bash

我们可以通过打印变量来验证我们是否已成功将环境变量传递给容器,如下所示。

/# echo $MYSQL_USER
/# echo $MYSQL_PASS

输出:

Isaactonyloi
fakepassword

代替之前的方法,我们可以创建一个包含我们想要传递的所有环境变量的模板文件。如果我们希望进行任何更改,这使我们可以轻松地覆盖在此文件中创建的环境变量。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Linux 中托管 Docker Internal

发布时间:2023/04/18 浏览次数:139 分类:Docker

Docker 允许开发人员通过将应用程序包装在称为容器的标准化单元中来高效地构建、测试和部署应用程序。 在使用 Docker 容器时,您可能会遇到需要将容器与主机连接的场景。

在 Docker 中设置工作目录

发布时间:2023/04/18 浏览次数:82 分类:Docker

在 Docker 中,我们可以通过编辑 Dockerfile 并添加密钥 WORKDIR 来设置我们的工作目录。本文将讨论在 Docker 中更改我们当前和默认的工作目录。

在 Docker 容器中公开多个端口

发布时间:2023/04/18 浏览次数:143 分类:Docker

Docker 容器使用端口来实现万维网上不同设备之间的通信。 在本篇文章中,我们将学习如何使用 Nginx 应用程序在 Docker 容器中公开多个端口。

将用户添加到 Docker 容器

发布时间:2023/04/18 浏览次数:187 分类:Docker

在本文中,我们将学习如何通过实现返回产品数组的 Express 应用程序将用户添加到 Docker 容器。

使用 Docker 网络主机命令

发布时间:2023/04/18 浏览次数:112 分类:Docker

在本文中,我们将学习如何使用 --network 命令将容器添加到主机网络。 如果我们不使用此命令指定网络,我们还将了解如何将容器添加到默认网络。

清除 Docker 容器日志

发布时间:2023/04/18 浏览次数:181 分类:Docker

本文介绍了我们可以用来清除 docker 容器中日志的不同方法。日志是应用程序在特定事件或状态发生时记录的信息,它们帮助我们监控应用程序并采取必要的措施。

Docker 中的守护进程日志位置

发布时间:2023/04/18 浏览次数:175 分类:Docker

本文将讨论守护进程事件以及我们通常可以在哪里找到每个操作系统 (OS) 的守护进程日志。

Dockerfile 中 COPY 和 ADD 命令的区别

发布时间:2023/04/18 浏览次数:158 分类:Docker

在 Dockerfile 中,我们可以使用 COPY 或 ADD 命令复制这些文件。 这些命令在功能上是相同的; 但是,存在一些差异。本文介绍了 Dockerfile 中 COPY 和 ADD 命令之间的区别。

Docker 中的 --rm 标志

发布时间:2023/04/18 浏览次数:77 分类:Docker

本文介绍如何在 docker 中使用 --rm 命令。 此外,它还提供了使用命令的优势。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便