小李同学 keep digging deeper
Docker

Docker 是怎样记录环境变量的

2 阅读 — 字

Docker 跑容器时用一套「容器环境」来承载环境变量:一个键值对集合,供容器内的进程读取。具体到怎么传进去,有四种入口。

Dockerfile 里的 ENV

构建镜像时写进去,之后每次启动都带着。适合那些不随环境变化的值,比如时区、语言。

docker run -e

启动时临时传:

docker run -e MY_ENV_VAR=my_value my_image

# 这样会将 MY_ENV_VAR=my_value 这个环境变量传递给容器内的进程。

同一个镜像在不同机器上跑不同配置,主要靠这个。

Compose 里的 environment

用 Docker Compose 管多容器时,写在 docker-compose.yml 的 environment 字段里,docker-compose up 时一并传进去。

容器启动时的容器环境

容器一启动,Docker 就为它建好这套环境,里面的进程直接读即可。

它到底存在哪里

Docker 不会把环境变量写进某个文件。它们是运行时动态给到进程的,容器停掉就没了。想确认一个运行中的容器带了哪些变量,看它的配置就行:

docker inspect <容器名> --format '{{json .Config.Env}}'

反过来说,如果你需要环境变量落到文件里(比如给容器内的脚本读),得自己在镜像或启动命令里处理,Docker 不负责这件事。

本文作者 小李同学,转载请注明出处。

评论

还没有人留言。

写一条

提交后会先进站主的待审列表,通过之后才公开。

搜索文章

输入关键词搜索文章。