为所有Docker容器设置全局环境变量

时间:2016-11-21 11:36:32

标签: docker systemd

是否可以设置环境。所有未来Docker容器的变量?

这将有助于为特定主机设置http代理而无需更改Docker镜像文件或运行容器的方式(因此相同的Docker容器可以在不同的“上下文”上正常运行)。

也许是通过/etc/default/docker

2 个答案:

答案 0 :(得分:0)

Docker compose使用变量替换,因此您可以在docker-compose文件中使用主机变量:

如果你的bash会话有一个名为EXTERNAL_PORT的变量。

web:
  build: .
  ports:
    - "${EXTERNAL_PORT}:5000"

检查:https://docs.docker.com/compose/compose-file/#variable-substitution

同样在代理的情况下,我猜测如果在当前的shell会话中定义,使用HTTP_PROXY默认情况下应该重定向流量。

export http_proxy=http://10.203.0.1:5187/
export https_proxy=$http_proxy
export ftp_proxy=$http_proxy
export rsync_proxy=$http_proxy
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"

此类内容应重定向所有http流量,您可以从.bashrc进行设置。从未使用docker进行测试,请告诉我它是否有效。

答案 1 :(得分:0)

如果你没有像Marcs所说的那样使用docker-compose,那么没有。

Dockerfiles创建二进制文件。 dockerfile(或docker-compose yaml或docker build)中未指定的任何内容都不会进入容器。出于许多安全原因以及一般最佳实践,这可能会导致这些容器依赖于主机本身。使用docker-compose来构建你的建筑,或者考虑对主机本身进行更改,这些更改会影响docker容器的那一层,例如影响172子网的系统范围的代理