迹忆客 EN >

当前位置:主页 > 学无止境 > 操作系统 > 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 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Solution to incorrect access log time when deploying Nginx in Docker

发布时间:2025/03/26 浏览次数:165 分类:Docker

In the process of operating the website, I never took the logs too seriously. Although logging was turned on, I never analyzed the logs carefully. Today, when I looked at the logs on a whim, I found that the recorded time was 8 hours less t

Docker deploys nginx php application

发布时间:2025/03/26 浏览次数:131 分类:Docker

I'm learning docker recently. I'm learning by building an nginx+php development environment example. Here I record the build process. First, give a docker-compose.yml deployment configuration file version: '3' services: nginx: container_nam

How to use Docker to image a Node.js web application

发布时间:2025/03/26 浏览次数:107 分类:Docker

Docker is a containerization platform that simplifies the packaging and execution of applications. Containers run as independent processes with their own file systems, but share the kernel of their host machine. Docker has attracted much at

Start a Bash terminal in a new Docker container

发布时间:2025/03/26 浏览次数:97 分类:Docker

Docker containers are a standard unit for packaging all the dependencies of an application, allowing us to easily run them in any environment. Containers have become very popular recently, and most developers now rely heavily on containers

Passing environment variables to containers in Docker

发布时间:2025/03/26 浏览次数:124 分类:Docker

This article will introduce how to pass environment variables to containers in Docker. Passing environment variables to containers in Docker using the -e and tags -env We will first see how to create environment variables and pass them to t

Install Docker using Homebrew

发布时间:2025/03/26 浏览次数:202 分类:Docker

There is no doubt that Docker containers have revolutionized the way we develop and deploy applications. They provide developers with the ability to package applications and dependencies in an isolated environment. Recently, we've seen wide

Enforce clean build of images in Docker

发布时间:2025/03/26 浏览次数:87 分类:Docker

This article discusses and demonstrates how to enforce clean builds of images in Docker. Building images in Docker We will use a simple Flask application to demonstrate this concept. my-app Create a app.py simple application named in the ho

Running a Docker instance from a Dockerfile

发布时间:2025/03/26 浏览次数:140 分类:Docker

Docker containers have undoubtedly become the standard unit for managing software and dependencies in different environments. When using real applications, you must create a docker file before building the container image of the application

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便