是否可以设置环境。所有未来Docker容器的变量?
这将有助于为特定主机设置http代理而无需更改Docker镜像文件或运行容器的方式(因此相同的Docker容器可以在不同的“上下文”上正常运行)。
也许是通过/etc/default/docker
?
答案 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子网的系统范围的代理