公司代理背后的码头工程师

eig*_*aza 28 docker docker-machine

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

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

小智 33

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

$HOME\.docker\machine\machines\default\config.json
Run Code Online (Sandbox Code Playgroud)

并设置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"
            ],
Run Code Online (Sandbox Code Playgroud)

文件编辑完成后,您只需执行:

docker-machine provision 
Run Code Online (Sandbox Code Playgroud)


BMW*_*BMW 28

使用当前的docker机器版本,我找不到更好的方法来进行更改,如在boot2docker中(Docker/Boot2Docker:在OS X上为docker设置HTTP/HTTPS代理)

如果在docker机器中的/ var/lib/boot2docker/profile中手动设置代理,重启后代理设置将自动删除.

所以我必须使用--engine-envset for proxy 创建一个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
Run Code Online (Sandbox Code Playgroud)

笔记:

这是一个两年前的答案,在docker中发生了很多变化,所以如果你仍然无法让它在代理后面工作,请阅读@Senri的答案.

文档:创建docker机器

  • 如果您使用[CNTLM](http://cntlm.sourceforge.net/)之类的东西在主机的`localhost`上创建代理,则需要将VM的代理设置为`http://10.0 .2.2:<host的代理端口>`(参见[this question](http://stackoverflow.com/questions/1261975/addressing-localhost-from-a-virtualbox-virtual-machine)). (2认同)

Yog*_*kar 5

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

在config.json中将"HTTP_PROXY = http://example.com:8080 " 添加到Env.重新启动机器,你就完全了.