32

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

是否可以告诉 docker-machine 使用代理,或者我是否需要一个已经预先配置了 http_proxy env 变量的 Glance 图像?

4

5 回答 5

38

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

$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 
于 2016-09-27T21:52:54.180 回答
28

使用当前的 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

笔记:

这是一个两年前的答案,docker中发生了很多变化,所以如果您仍然无法使其在代理后面工作,请阅读@Senri的答案和其他人。

文档:创建 docker 机器

于 2015-08-19T02:43:07.870 回答
5

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

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

于 2015-08-21T07:10:27.007 回答
3

如果您已经创建了机器(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 

资源

于 2017-12-14T14:39:22.373 回答
3

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

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

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

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

更多信息可在docs上找到。

于 2018-12-21T11:26:30.143 回答