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
您提供的第二个命令确实扩展了容器内的变量,因此这表明您没有在容器内应用该设置。
我根据 ~/.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
您提供的第二个命令确实扩展了容器内的变量,因此这表明您没有在容器内应用该设置。