【问题标题】:Docker proxy settings not consistentDocker 代理设置不一致
【发布时间】:2021-05-16 11:58:13
【问题描述】:

我根据~/.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 proxy environment-variables docker-swarm http-proxy


    【解决方案1】:

    这两个命令非常不同,不是由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
    

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

    【讨论】:

    • 这很有意义。谢谢!
    • @potofski 关于您的代理设置不起作用的原因,请检查您的 docker 客户端 (docker version) 的版本以确保您是最新的 (20.10.x)。然后确保在应用更改后创建了容器(docker run,而不是 docker exec)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    相关资源
    最近更新 更多