在Windows上的代理后面设置docker工具箱

时间:2018-10-29 03:24:59

标签: docker docker-machine docker-toolbox

根据我的公司政策,我们使用Windows 7,并且在计算机上具有特权访问权限(管理员权限的子集)。

我已经安装了docker工具箱,但是当它需要从Artifactory公司的Docker中心提取图像时,由于HTTPS和代理,我遇到了问题。

3 个答案:

答案 0 :(得分:3)

我终于弄清楚了如何在Windows 7上使用HTTPS证书在公司代理后面正确设置docker工具箱。

以下是步骤

  1. 安装Docker工具箱
  2. 安装后,转到 C:/ Users //。docker / machine / machine / default 并打开config.json。如果您没有该文件夹,请从桌面打开“ Docker Quickstart Terminal”,为您自己创建一个虚拟盒子docker-machine。
  3. 下添加以下行
{
    "HostOptions": {
        ...
        "EngineOptions": {
            ...
            "Env": [
                "HTTP_PROXY=http://<username>:<pwd>@<host>:<port>",
                "HTTPS_PROXY=http://<username>:<pwd>@<host>:<port>",
                "NO_PROXY=<docker-machine ip>"
            ],
        }
    }
 }

请注意HTTPS_PROXY中的http。 4.完成上述步骤后,您需要安装公司证书 5.获取一组企业根证书,该证书应安装在企业配置的浏览器中。在Chrome中,您可以转到“设置”,单击“显示高级设置”,然后向下滚动到HTTPS / SSL,在其中可以选择“管理证书”。我的组织已将它们放入受信任的根证书颁发机构,并以该组织的名字命名。导出每个(我有两个),一次导出一个,确保选择DER格式。

  1. 将它们保存到已知位置后,您将需要将它们转换为PEM格式。我发现最简单的方法是从Docker快速入门终端中运行openssl.exe [1]命令。
  

openssl x509-通知der -in证书.cer -out证书.pem

  1. 拥有.pem文件后,您将需要将它们复制到Docker计算机可以访问的位置。我在c:\ Users \ my.username \ certs中创建了一个目录,并将其复制到那里。

  2. 此步骤可能并非严格必要,但这是我所做的,并且可以正常工作。您将需要将那些证书复制到持久的boot2docker分区中。我正在连接到我的默认计算机,这是您需要执行第5步的操作。

  

MINGW64:$ docker-machine ssh默认值

     

docker @ default:〜$ sudo -s   root @默认值:/ home / docker#mkdir / var / lib / boot2docker / certs   root @默认值:/ home / docker#cp /c/Users/my.username/certs/*.pem   / var / lib / boot2docker / certs /

现在是时候编写bootlocal.sh脚本了,它将在每次系统启动时将证书复制到正确的位置。[2]如果还没有,请按照步骤4打开与计算机的SSH连接。

触摸/var/lib/boot2docker/bootlocal.sh && chmod + x /var/lib/boot2docker/bootlocal.sh vi /var/lib/boot2docker/bootlocal.sh 插入以下内容并保存文件:

  

!/ bin / sh

     

mkdir -p /etc/docker/certs.d && cp certs / certificate.pem   /etc/docker/certs.d

通过使用计算机内部的reboot命令或通过Docker终端使用docker-machine命令重新启动计算机:

  

docker-machine restart default

现在,您应该可以运行“ hello-world”和其他了。我希望这有帮助。

参考:Docker on Windows (Boot2Docker) - certificate signed by unknown authority error

答案 1 :(得分:3)

我最近遇到了同样的问题,并能够通过以下步骤解决该问题。如官方Docker文档中所述

  1. 首先,停止并删除默认的docker-machine(如果已创建)

        docker-machine stop default
        docker-machine rm default
    

    其中“默认”是docker-machine的默认名称。

    1. 删除后,使用代理设置创建docker-machine:

      docker-machine create -d virtualbox --engine-env HTTPS_PROXY = http://example.com:8080 --engine-env HTTPS_PROXY = https://example.com:8080 --engine-env NO_PROXY = example2.com默认值

      < / li>

参考:https://docs.docker.com/v17.12/machine/reference/create/#specifying-docker-swarm-options-for-the-created-machine

此解决方案绝对对我有效。

答案 2 :(得分:-1)

我通过在config.json文件的代理设置中的代理URL的末尾添加反斜杠(“ /”)解决了这个问题。