在公司代理背后工作时..
为什么 docker 无法从环境变量中导出代理特定值 (
http_proxy, https_proxy,...
).
即使环境变量中提到了代理 URL,通常在拉取镜像时也会遇到超时问题。
我必须在 /etc/systemd/system/docker.service.d
文件夹中或通过创建配置文件来设置值(
再次硬编码相同的值)。
如果我们更改代理 URL,我们必须在不同的地方进行更改。或者有什么方法可以引用环境变量中的值?
我已经尝试过
docker run -e env_proxy_variable=proxy_url
但遇到了同样的超时问题。
考虑使用以下内容:
export HTTP_PROXY=http://xxx:port/
export HTTPS_PROXY=http://xxx:port/
export FTP_PROXY=http://xxx:port/
您可以在 /etc/default/docker 文件中对这些变量进行硬编码,以便在 docker 启动时导出它们。
您可以通过输入 $(name_of_var) 检查环境变量是否已导出。例如,跑步后
docker run --env HTTP_PROXY="123.45.21.32" -it ubuntu_latest /bin/bash
类型
echo $HTTP_PROXY
您的 DNS 服务器可能未配置。尝试一下
cat /etc/resolv.conf
如果您看到类似的内容:
nameserver:8.8.8.8
那么很可能 DNS 服务器在防火墙后面无法访问。您可以将 dns 服务器地址与
docker run
命令一起传递,如下所示:
docker run --env HTTP_PROXY="123.45.21.32" --dns=172.10.18.0 -it ubuntu_latest /bin/bash