Docker 代理设置不一致

Docker proxy settings not consistent

我根据 ~/.docker/config.json (https://docs.docker.com/network/proxy/#configure-the-docker-client) 中的 docker 文档在主机上设置了代理:

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://127.0.0.1:3001",
     "httpsProxy": "http://127.0.0.1:3001"
   }
 }
}

如果我启动一个新容器,似乎设置了环境变量。如果我从主机上检查它:

# docker exec <container> echo $http_proxy
# http://127.0.0.1:3001

但是,如果我进入带有交互的容器shell,环境变量是没有的:

# docker exec -it <container> sh
# echo $http_proxy
#

为什么我这里看不到?我好像我的应用程序也看不到设置。代理设置只是针对不同的用户设置的吗?

这两个命令非常不同,不是由 docker 引起的,而是由主机上的 shell 引起的。这个命令:

# docker exec <container> echo $http_proxy
# http://127.0.0.1:3001

在主机上扩展 shell 中的变量,然后将该扩展变量传递给在容器内运行的 docker 命令。它与 运行:

非常相似
# echo $http_proxy
http://127.0.0.1:3001
# docker exec <container> echo http://127.0.0.1:3001
http://127.0.0.1:3001

您提供的第二个命令确实扩展了容器内的变量,因此这表明您没有在容器内应用该设置。