如何在docker工具箱中设置代理?

时间:2016-04-25 14:58:40

标签: windows proxy docker-toolbox

我刚刚在windows environnement(Windows 7 Pro)上安装了docker工具箱,由于企业代理,我的网络超时了。如何在docker工具箱中设置代理?

感谢您的帮助。

5 个答案:

答案 0 :(得分:24)

我遇到了同样的问题。这是我的解决方案。

<强> ENV:

Win7,Docker Toolbox 17.03,cmder终端,落后于企业代理设置。

<强>解决方案:

在C:\ Program Files \ Docker Toolbox中,找到start.sh文件。添加以下两个代理设置:

export http_proxy="http://hostname:port/"
export https_proxy="http://hostname:port/"

至少,它对我有用。

答案 1 :(得分:7)

我对 Windows 7 有类似的问题,但是通过以下步骤解决了这个问题:

  • 步骤1.使用以下配置创建批处理脚本C:\ Program Files \ Docker Toolbox \ kitematic_proxy.cmd

    set proxy=YOUR_PROXY
    SET HTTP_PROXY=%proxy%
    SET HTTPS_PROXY=%proxy% 
    for /f %%i in ('docker-machine.exe ip default') do set DOCKER_HOST=%%i
    SET NO_PROXY=%DOCKER_HOST%
    set DOCKER_HOST=tcp://%DOCKER_HOST%:2376
    cd Kitematic
    Kitematic.exe
    
  • 步骤2.从开始菜单打开Oracle虚拟机,单击显示进入命令提示符(确保Oracle Vm已启动并运行)

enter image description here

输入        sudo vi / var / lib / boot2docker / profile

添加此行

export HTTP_PROXY=http://your.proxy.name:8080
export HTTPS_PROXY=http://your.proxy.name:8080

使用您的代理地址&amp;端口

此链接对我有很大帮助 https://github.com/docker/kitematic/wiki/Common-Proxy-Issues-&-Fixes

注意:

  1. 不要忘记将192.168.99.100 ip添加到代理设置的例外列表中(使用 inetcpl.cpl
  2. 不要忘记将HTTP_PROXY和HTTPS_PROXY添加到用户变量(高级设置 - >环境变量)
  3. 别忘了重新启动电脑

答案 2 :(得分:2)

在企业代理后面的 windows 7 (docker 18.09.0)上安装docker对我来说非常复杂。这是我遵循的步骤:

  1. 在Windows环境中设置HTTP_PROXY变量(HTTP_PROXY = http://your_proxy:port
  2. 使用安装程序安装docker工具箱或以admin身份在powershell中运行:choco install docker-toolbox(警告!不要将Docker用于Windows,因为它的目标是Windows 10)
  3. 确保您先前尝试创建的虚拟机都没有(docker-machine ls为空。如果未运行,则为docker-machine rm default
  4. docker-machine --native-ssh create -d virtualbox --engine-env HTTP_PROXY=$HTTP_PROXY --engine-env HTTPS_PROXY=$HTTPS_PROXY default用户身份在Powershell中运行。
  5. 运行C:\Program Files\Docker Toolbox\start.sh
  6. 现在运行docker pull busybox。这应该起作用。

答案 3 :(得分:0)

啊!实际上,使用Docker Toolbox时,Windows部分只是在创建的虚拟机上非常薄的一层,因此我的方法是配置虚拟机本身以使一切正常运行。所以。

0)在Windows主机上设置全局环境变量

HTTP_PROXY = "http://login:password@yourproxy:8080"
HTTPS_PROXY = "http://login:password@yourproxy:8080"

请注意大写字母! (您也可以设置FTP_PROXYNO_PROXY

1)运行Docker Quickstart Terminal,它将在您的VirtualBox或任何其他名称下创建名为default的虚拟机。还会显示新创建的VM的地址,例如

docker is configured to use the default machine with IP 192.168.99.104

2)SSH到该地址(即使用PuTTY)。登录名:docker密码:tcuser

3)运行

echo '
{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://login:password@yourproxy:8080",
     "httpsProxy": "http://login:password@yourproxy:8080"
   }
 }
}' > /home/docker/.docker/config.json

这将强制Docker客户端(在VM上!)运行内部具有正确环境的容器。

4)因此,现在您可以在VM内部使用Docker客户端。要强制Windows docker客户端(以及docker-compose)也在运行的容器内设置正确的环境,请将与Windows主机上第3页中相同的config.json放在C:\User\<yourhomedir>\.docker目录中。

现在检查运行容器中的环境

docker run -ti ubuntu env

HTTPS_PROXY=http://login:password@yourproxy:8080
https_proxy=http://login:password@yourproxy:8080
HTTP_PROXY=http://login:password@yourproxy:8080
http_proxy=http://login:password@yourproxy:8080

请注意,CAPS和小写字母变量均已正确设置!

对所有内容进行最终检查是可以的:

docker run -ti ubuntu apt-get update

5)您可能面临的一个问题是,代理的地址来自网络,这是docker在创建自己的网络时使用的地址,因此在您执行docker network create之后,它会破坏到代理的路由。因此,请确保代理地址与172.18.x.x不同。如果是这样,则通过在VM上进行另一个配置来强制docker使用另一个地址空间来创建网络

sudo -i
echo '
{
  "default-address-pools": [
    {"base":"172.80.0.0/16","size":24}
  ]
}' > /etc/docker/daemon.json

然后在Windows上依次docker-machine restart,然后再次echo ... > /home/docker/.docker/config.json,重新启动后它会消失。

6)不要重新启动虚拟机,需要时将其暂停。

答案 4 :(得分:0)

我在Windows 7 Docker工具箱安装中遇到问题

$ docker --version
Docker version 18.09.3, build 774a1f4eee

$ docker-compose --version
docker-compose version 1.23.2, build  1110ad01

当我尝试

docker run hello-world

我收到了

  

无法在本地找到图片“ hello-world:latest”   C:\ Program Files \ Docker Toolbox \ docker.exe:来自守护程序的错误响应:Get https://registry-1.docker.io/v2/:net / http:等待连接时请求被取消(等待头时超过Client.Timeout)。   请参阅“ C:\ Program Files \ Docker Toolbox \ docker.exe运行--help”。

根据https://docs.docker.com/toolbox/faqs/troubleshoot/,我已在docker机器内的/var/lib/boot2docker/profile中注册了我的企业代理:

  
      
  1. 使用ssh登录到虚拟机。本示例登录default计算机。

    $ docker-machine ssh default
    docker@default:~$ sudo vi /var/lib/boot2docker/profile
    
  2.   

然后我在profile

的末尾添加了我的企业代理
export "HTTP_PROXY=http://host:port"
export "HTTPS_PROXY=http://host:port"

之后,我继续说明

  
      
  1. 在文件末尾添加一个NO_PROXY设置,类似于下面的示例。

      export "NO_PROXY=192.168.*.*"
    
  2.   
  3. 重新启动Docker。   在VM上修改profile后,重新启动Docker并退出计算机。

      docker@default:~$ sudo /etc/init.d/docker restart
      docker@default:~$ exit
    
  4.   

之后,docker run hello-world命令运行良好

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/