Windows10下使用代理运行Docker

Docker Toolbox版本

  1. 首先安装Docker Toolbox
  2. 在运行Docker Quickstart Terminal之前,首先打开Git Bash,创建或编辑文件 ~/.bash_profile ,在其中加上代理服务器的环境变量

    # 替换http://127.0.0.1:7890为你自己的代理服务器地址
    
    export HTTP_PROXY="http://127.0.0.1:7890"
    export HTTPS_PROXY="http://127.0.0.1:7890"
  3. 在Git Bash中运行Docker Toolbox目录下的*start.sh*脚本,等待执行完成。此时应该已经创建了一个名为default的*docker machine*。

  4. 打开文件 ~/.docker/machine/machines/default/config.json ,找到其中的HostOptions.EngineOptions.Env字段,此时里面应该已经有了两条环境变量的配置,形如:

    {
    ...
            "Env": [
                "HTTP_PROXY=http://127.0.0.1:7890",
                "HTTPS_PROXY=http://127.0.0.1:7890"
            ],
    ...
    }

    修改其中的127.0.0.1为地址192.168.99.1,以便能够从虚拟机内部访问到当前宿主机(192.168.99.1)的代理。修改后如下:

    {
    ...
            "Env": [
                "HTTP_PROXY=http://192.168.99.1:7890",
                "HTTPS_PROXY=http://192.168.99.1:7890"
            ],
    ...
    }
  5. 重新应用 docker machine 的配置,执行以下命令:

    docker-machine provision default
  6. 确保代理客户端已经打开了允许LAN连接的设置(如果有),然后尝试拉取docker镜像检查代理是否设置成功:

    docker pull hello-world
  7. 要在容器里使用代理,需要创建文件 ~/.docker.config.json ,并在其中添加如下内容

    {
      "proxies": {
        "default": {
          "httpProxy": "http://192.168.99.1:7890",
          "httpsProxy": "http://192.168.99.1:7890",
          "noProxy": "127.0.0.1,localhost,192.168.*"
        }
      }
    }

Docker Desktop版本

Windows下

在Docker Desktop设置中,设置Proxy为本机局域网IP,如: http://192.168.1.77:7890

然后修改用户目录下的配置文件,在其中的其他配置之后加入代理服务器设置,以便让代理在容器内生效 %USERPROFILE%/.docker/config.json

{
  ...
  "proxies": {
    "default": {
      "httpProxy": "http://192.168.1.77:7890",
      "httpsProxy": "http://192.168.1.77:7890",
      "noProxy": "127.0.0.1,localhost,192.168.*"
    }
  }
}
WSL下
  1. 安装Docker: https://docs.docker.com/v17.12/install/linux/docker-ce/ubuntu/#install-docker-ce
  2. 安装Docker Compose:
  3. 设置环境变量:export DOCKER_HOST=tcp://localhost:2375

首先确定WSL下Docker主机的IP:

# 在WSL下执行命令行
$ docker info

# 检查输出中的HTTP_PROXY和HTTPS_PROXY,如:
  HTTP Proxy: http://10.0.75.1:7890
  HTTPS Proxy: http://10.0.75.1:7890

创建文件 *~/.docker/config.json*,然后按添加配置:

{
  "proxies": {
    "default": {
      "httpProxy": "http://10.0.75.1:7890",
      "httpsProxy": "http://10.0.75.1:7890",
      "noProxy": "127.0.0.1,localhost,192.168.*,10.0.75.*"
    }
  }
}

其中192.168.1.77为本机的局域网IP