在 Docker 中向容器传递环境变量
本文将介绍在 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
代替之前的方法,我们可以创建一个包含我们想要传递的所有环境变量的模板文件。如果我们希望进行任何更改,这使我们可以轻松地覆盖在此文件中创建的环境变量。
相关文章
在 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 容器中日志的不同方法。日志是应用程序在特定事件或状态发生时记录的信息,它们帮助我们监控应用程序并采取必要的措施。
Dockerfile 中 COPY 和 ADD 命令的区别
发布时间:2023/04/18 浏览次数:158 分类:Docker
-
在 Dockerfile 中,我们可以使用 COPY 或 ADD 命令复制这些文件。 这些命令在功能上是相同的; 但是,存在一些差异。本文介绍了 Dockerfile 中 COPY 和 ADD 命令之间的区别。