【问题标题】:docker-machine behind corporate proxy企业代理背后的 docker-machine
【发布时间】:2015-09-20 06:02:15
【问题描述】:

我正在尝试使用 docker-machine 在公司 http 代理后面的私有云 (Openstack) 上创建一个实例。

是否可以告诉 docker-machine 使用代理,或者我是否需要预先配置 http_proxy 环境变量的 Glance 映像?

【问题讨论】:

  • 这应该可以解决您的问题。 github.com/docker/machine/blob/…
  • 确实如此。我认为它是在 v0.4.0 中添加的,在 v0.3.0 中不可用,谢谢。想要将其发布为答案以便我接受吗?

标签: docker docker-machine


【解决方案1】:

使用当前的 docker 机器版本,我找不到更好的方法来进行 boot2docker (Docker/Boot2Docker: Set HTTP/HTTPS proxies for docker on OS X) 中的更改

如果在docker机器的/var/lib/boot2docker/profile中手动设置代理,重启后代理设置会自动删除。

所以我必须创建一个为代理设置--engine-env 的 docker 机器

docker-machine create -d virtualbox \
    --engine-env HTTP_PROXY=http://example.com:8080 \
    --engine-env HTTPS_PROXY=https://example.com:8080 \
    --engine-env NO_PROXY=example2.com \
    proxybox

注意事项:

这是一个两年前的答案,发生了很多变化 码头工人,所以如果你仍然不能让它在代理后面工作,请 阅读@Senri's answer 和其他人。

文档:create docker machine

【讨论】:

  • 如果您使用类似CNTLM 在主机的localhost 上创建代理,则需要将VM 的代理设置为http://10.0.2.2:<host's proxy port>(请参阅this question)。
  • 只是编辑/var/lib/boot2docker/profile 对我不起作用。 @Senri 的解决方案虽然有效。
  • 合理,docker中的更新每天都在发生,我们无法及时捕捉到所有的变化,我将删除更新部分。
【解决方案2】:

可以修改现有的 docker-machine 配置以添加代理环境。可以编辑 $HOME/.docker/machine/machines//.config.json 中的 config.json。

将“HTTP_PROXY=http://example.com:8080”添加到 config.json 中的 Env。重新启动机器,一切就绪。

【讨论】:

    【解决方案3】:

    如前所述,您可以在以下位置编辑文件

    $HOME\.docker\machine\machines\default\config.json
    

    并设置 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 变​​量(或删除它们):

     "HostOptions": {
            "Driver": "",
            ...
            "EngineOptions": {
               ...
                "Env": [
                  "HTTP_PROXY=http://10.121.8.110:8080",
                  "HTTPS_PROXY=http://10.121.8.110:8080",
                  "NO_PROXY=192.168.23.4"
                ],
    

    文件编辑完成后,你只需要执行:

    docker-machine provision 
    

    【讨论】:

    • 这适用于引擎,例如拉取图像时需要。
    • 如果当前没有默认配置并且 $HOME\.docker\machine\ 中没有“machines”文件夹怎么办?
    【解决方案4】:

    如果你已经创建了机器(VM),你可以像这样配置代理:

    1- SSH into the docker dev host: docker-machine ssh dev
    2- Add the following lines to /var/lib/boot2docker/profile (this file is read-only, use sudo)
        export HTTP_PROXY=http://<proxy>:<port>
        export HTTPS_PROXY=http://<proxy>:<port>
    3- Exit the ssh session and restart the docker machine: docker-machine restart dev 
    

    Source

    【讨论】:

    • 这对我有用!!!...我尝试了上面的方法,但对我没有用...我不知道为什么
    【解决方案5】:

    从 Docker 18.09 开始,我们可以在命令行中指定环境变量,例如代理到容器,如下所示:

    docker run --env HTTP_PROXY="172.10.13.14" -it myImage:latest /bin/bash

    此外,我们可以通过将这些设置写入~/.docker/config.json 文件中来为 docker 客户端指定这些设置,如下所示:

    {
     "proxies":
     {
       "default":
       {
         "httpProxy": "http://127.0.0.1:3001",
         "noProxy": "*.test.example.com,.example2.com"
       }
     }
    }
    

    更多信息请访问docs。

    【讨论】:

    • 这似乎只影响新启动的容器,但对引擎本身没有影响。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 2015-12-25
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多