Docker Compose是否会记录通过env_file加载的环境变量?
问题背景
我们可以通过如下方式将数据加载至容器:
vars.env 文件内容
FOO=123 BAR=abc
docker-compose.yml 文件内容
my_service: image: my_image env_file: - ./vars.env # ...
请问这些通过env_file加载的环境变量是否会被记录?(我在Linux系统上运行容器。)
回答
这些通过env_file加载的环境变量会被多处记录,具体如下:
- 容器运行时环境:变量会直接注入容器的运行环境,你可以通过
docker exec <容器ID/名称> env或者在容器内执行printenv命令查看,容器内的所有进程都能读取到这些变量的明文值,如果进程有日志记录环境变量的逻辑,这些值也会被写入日志。 - Docker本地存储与配置:
- 执行
docker inspect <容器ID/名称>,输出的Config.Env字段里会明文显示这些环境变量; - 运行
docker-compose config命令,会输出解析后的完整Compose配置,其中包含这些变量的明文值; - 这些信息会被存储在Docker的本地数据目录(通常是
/var/lib/docker)下的相关文件中,拥有Docker权限或root权限的本地用户可以直接查看。
- 执行
注意:不要将敏感信息(如密码、密钥)通过
env_file传递,因为这些值会以明文形式暴露在多个地方,存在泄露风险。
内容的提问来源于stack exchange,提问作者lonix
相关产品推荐
相关产品推荐

