Docker/Boot2Docker:为 OS X 上的 docker 设置 HTTP/HTTPS 代理 [英] Docker/Boot2Docker: Set HTTP/HTTPS proxies for docker on OS X
问题描述
简而言之:如何在 Mac OS X 上为 Docker 设置 HTTP/HTTPS 代理?
In short: How can I set the HTTP/HTTPS proxies for Docker on Mac OS X?
详细:
我在 Mac OS X 上通过代理运行 Docker (1.12).我按照安装说明安装了boot2docker.如果我从我的网络内部 Docker 注册表中提取,这工作正常.
I run Docker (1.12) on Mac OS X behind a proxy. I followed the installation instructions and installed boot2docker. This is working fine if I pull from my network-internal Docker registry.
但是,从 docker.io 拉取时出现以下错误:
However, I get the following error when pulling from docker.io:
machine:~ me$ docker run ubuntu echo hello world
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
2014/06/30 13:23:26 Get https://index.docker.io/v1/repositories/ubuntu/images:
dial tcp: lookup index.docker.io: no such host
注意 1:DOCKER_HOST
、http_proxy
和 https_proxy
在环境中可用(运行 env
显示所有三个).
Note 1: DOCKER_HOST
, http_proxy
and https_proxy
are available in the environment (running env
displays all three).
注意 2:我在其他帖子中读到此错误发生在守护程序未正常运行时.但是,docker version
没有显示任何问题.此外,我可以从我的网络内部 Docker 注册表中拉取和运行映像.
Note 2: I read in other posts that this error occurs when the daemon is not running properly. However, docker version
doesn't show any problems. Moreover, I can pull and run images pulled from my network-internal Docker registry.
Note 3: I was able to set up Docker on Red Hat Linux (RHEL). I had to add the proxy information to /etc/sysconfig/docker
. I read that there is a similar file on Ubuntu (/etc/init/docker.conf
). However, I could not find that file for Docker (or boot2docker?) on Mac OS X.
推荐答案
您需要修改的配置文件不会在您的 OS X 文件系统上,它们将附加到 Tiny Core Linux VM 上,作为您的本地 Docker 服务器.
The config files you need to modify won't be on your OS X file system, they'll be attached to the Tiny Core Linux VM which acts as your local Docker server.
要为此配置代理,首先从应用程序启动 Boot2docker.启动后,获取一个终端窗口并通过 ssh 进入 VM:
To configure the proxy for that, first start Boot2docker from Applications. Once it's started, get a terminal window and ssh into the VM:
bash-3.2$ boot2docker ssh
Warning: Permanently added '[localhost]:2022' (RSA) to the list of known hosts.
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
__/
\____\______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ __| | ___ ___| | _____ _ __
| '_ / _ / _ | __| __) / _` |/ _ / __| |/ / _ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 1.0.1
master : cad5ece - Fri Jun 20 02:03:40 UTC 2014
docker@boot2docker:~$
现在创建/修改/var/lib/boot2docker/profile 来设置代理信息:
Now create/modify /var/lib/boot2docker/profile to set proxy info:
docker@boot2docker:~$ sudo vi /var/lib/boot2docker/profile
Tinycore 需要代理信息如下:protocol://ip:port
为安全起见,我为 HTTP 和 HTTPS 设置了代理.
Tinycore needs the proxy info as follows: protocol://ip:port
To be safe I set proxies for both HTTP and HTTPS.
export HTTP_PROXY=http://your.proxy.name:8080
export HTTPS_PROXY=http://your.proxy.name:8080
现在您可以重新启动 VM docker 服务并退出 VM.
Now you can restart the VM docker service and exit the VM.
docker@boot2docker:~$ sudo /etc/init.d/docker restart
docker@boot2docker:~$ exit
Connection to localhost closed.
您现在应该能够针对 VM 实例运行客户端.
You should be able to run the client against the VM instance now.
bash-3.2$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Official Ubuntu base image 356
stackbrew/ubuntu Official Ubuntu base image 39
crashsystems/gitlab-docker A trusted, regularly updated build of GitL...
此更改通过 VM 重新启动保持不变.你应该只需要做一次.
This change is persisted through VM restarts. You should only need to do it once.
作为记录,VirtualBox 有一个全局的代理首选项设置,但我在那里尝试的任何方法都不起作用.
For the record, VirtualBox has a global preference setting for proxies but nothing I tried there would work.
这篇关于Docker/Boot2Docker:为 OS X 上的 docker 设置 HTTP/HTTPS 代理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!