2016-11-21 315 views
1

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

这将有助于针对特定主机设置HTTP代理,而不改变泊坞窗图像文件或运行容器的方式(以便同泊坞容器可以运行在不同的“上下文”罚款)。

也许通过/etc/default/docker

回答

0

泊坞构成使用变量替换,所以你可以在一个码头工人,撰写文件中使用主机变量:

如果你的bash命令已经定义了一个名为EXTERNAL_PORT变量。

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

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

而且在代理我猜使用HTTP_PROXY应该是默认重定向如果在当前shell会话定义的交通情况。

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设置。从来没有测试与码头让我知道它是否工作。

+0

我不是在谈论泊坞窗,撰写一个系统级代理,对不起。 –

+0

@ThomasDecaux那么你应该尝试'HTTP_PROXY'是不相关的泊坞窗或码头,构成用于配置代理,它只是一个Linux环境变量。还有一个窗口对应它。我将创建一个自定义用户来运行配置了所有环境变量的映像。 – Marcs

0

如果你不使用泊坞窗,撰写的榨渣说,则没有。

Dockerfiles创建二进制文件。任何未在dockerfile(或docker-compose yaml或docker build)中指定的东西都不会进入容器。这是出于许多安全原因以及一般性的最佳实践,因为人们可能会导致这些容器依赖主机本身。无论是使用泊坞窗,撰写做你的建筑物或可考虑更改主机本身会影响泊坞窗容器的那层如影响到172子网

+0

Dockerfile创建映像,通过docker run运行吗?我想自动通过''docker run -e K1 = V1 ...''。所以开发人员不关心代理。 –