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

问题描述 投票:2回答:3

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

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

docker docker-machine docker-toolbox
3个回答
3
投票

我终于想出了如何在使用HTTPS证书的企业代理后面的Windows 7上设置docker工具箱的方法。

以下是步骤

  1. 安装Docker Toolbox
  2. 安装完成后,转到C:/ Users //。docker / machine / machine / default并打开config.json。如果您没有该文件夹,请从桌面打开“Docker Quickstart Terminal”,为自己创建一个虚拟机器泊坞机。
  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”,您可以在其中选择“管理证书”。我的组织已将它们放在Trusted Root Cerftification Authority中,并在组织之后命名。导出每个(我有两个),一次一个,确保选择DER格式。

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

openssl x509 -inform der -in certificate.cer -out certificate.pem

  1. 获得.pem文件后,您需要将它们复制到Docker计算机可以访问的位置。我在c:\ Users \ my.username \ certs中创建了一个目录并将其复制到那里。
  2. 这一步可能不是绝对必要的,但这就是我所做的,而且它有效。您需要将这些证书复制到boot2docker分区中,该分区是持久的。我正在连接到我的默认计算机,这是您需要为第5步执行的操作。

MINGW64:$ docker-machine ssh默认

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

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

touch /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


3
投票

我最近遇到了同样的问题,并能够通过以下步骤解决问题。正如官方docker文档中所建议的那样

  1. 首先,如果已经创建了默认的docker-machine,请停止并删除它 docker-machine stop default docker-machine rm default 其中'default'是docker-machine的默认名称。 删除后使用代理设置创建docker-machine: 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 default

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

这个解决方案绝对适合我。


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.