2014-06-30 52 views
38

简而言之:如何在Mac上设置Docker的HTTP/HTTPS代理  OS   X?Docker/Boot2Docker:为OS X上的Docker设置HTTP/HTTPS代理

详细

我在Mac OS X上运行多克(1.12)背后的代理。我跟着installation instructions并安装了boot2docker。如果我从网络内部的Docker注册表中拔出,这工作正常。

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 

注1DOCKER_HOSThttp_proxyhttps_proxy在环境中可用(运行env显示全部三个)

然而,从docker.io拉扯时,我得到了下面的错误。

注2:我在其他帖子中读到,当守护程序运行不正常时会发生此错误。但是,docker version不显示任何问题。此外,我可以拉和运行从我的网络内部的Docker注册表中提取的图像。

注意3:我能够在Red Hat Linux(RHEL)上设置Docker。我必须将代理信息添加到/etc/sysconfig/docker。我读过Ubuntu上有类似的文件(/etc/init/docker.conf)。但是,我无法在Mac上找到Docker(或boot2docker?)的文件  OS   X.

回答

97

您需要修改的配置文件不会在OS X文件系统上,它们将被连接到Tiny Core Linux VM作为您的本地Docker服务器。

要为此配置代理,请首先从应用程序启动Boot2docker。一旦它开始,得到一个终端窗口和ssh到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 
[email protected]:~$ 

现在创建/修改的/ var/lib中/ boot2docker/profile中设置代理信息:

[email protected]:~$ sudo vi /var/lib/boot2docker/profile 

Tinycore需要代理信息如下所示:protocol:// ip:port
为了安全起见,我为HTTP和HTTPS都设置了代理。

export HTTP_PROXY=http://your.proxy.name:8080 
export HTTPS_PROXY=http://your.proxy.name:8080 

现在您可以重新启动VM泊坞服务并退出虚拟机。

[email protected]:~$ sudo /etc/init.d/docker restart 
[email protected]:~$ exit 
Connection to localhost closed. 

您应该可以立即运行客户端对VM实例。

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重新启动持续进行。你只需要做一次。

为了记录,VirtualBox具有代理服务器的全局首选项设置,但没有任何我在那里尝试过。

+6

这个答案也适用于代理服务器后面的Windows机器。 – jbowtie

+0

这也解决了我的输入滞后问题 –

+0

这些代理设置应该显示在你的'env'中吗?并且'profile'文件应该叫做'.profile'? – HattrickNZ

1

我通过设置代理配置解决了这个问题。配置文件:

[email protected]:~$ vi ~/.profile 

在末尾添加代理:

# 
PS1='\[email protected]\h:\w\$ ' 
PAGER='less -EM' 
MANPAGER='less -isR' 

EDITOR=vi 

export PS1 PAGER FILEMGR EDITOR MANPAGER 

export BACKUP=1 
[ "`id -un`" = "`cat /etc/sysconfig/tcuser`" ] && echo "$BACKUP" | sudo tee /etc/sysconfig/backup >/dev/null 2>&1 
export FLWM_TITLEBAR_COLOR="58:7D:AA" 

if [ -f "$HOME/.ashrc" ]; then 
    export ENV="$HOME/.ashrc" 
    . "$HOME/.ashrc" 
fi 

TERMTYPE=`/usr/bin/tty` 
[ ${TERMTYPE:5:3} == "tty" ] && (
[ ! -f /etc/sysconfig/Xserver ] || 
[ -f /etc/sysconfig/text ] || 
[ -e /tmp/.X11-unix/X0 ] || 
startx 
) 

export HTTP_PROXY=http://proxy.XX.com:8080 
export HTTPS_PROXY=http://proxy.XX.com:8080 

最后,重新启动Boot2Docker。

+0

+1我无法启动Boot2Docker开始,因为它无法下载req 'ISO。通过设置上述环境变量(在Windows7中),我能够使它工作! –

+0

在我的情况下,我对〜/ .ashrc&〜/ .profile所做的任何更改都不会持久。我试着tcl filetool.sh备份,没有任何工作..我完全困惑。 –

18

截至最近(2015年8月)的1.8版本,docker推荐的创建docker主机的方式(包括boot2docker VM)通过其docker-machine实用程序。

而且还因为1.8版本,搬运工机现在可以通过类似下面的调用支持在虚拟机创建时代理的配置:

docker-machine create -d virtualbox \ 
    --engine-env HTTP_PROXY=http://192.37.246.181:2010 \ 
    --engine-env HTTPS_PROXY=http://192.37.246.181:2010 \ 
    --engine-env NO_PROXY=novartis.net \ 
    default 

这导致VM一个已经指定的环境变量添加到初始化文件/ var/lib/boot2docker/profile - 无需手动添加它们。

0

如果您使用的是Docker for Mac且位于代理环境之后。

单击顶部菜单栏上的泊坞窗图标。 (如步骤1.3所示here

转到Preferences > Advanced并在那里设置HTTP和HTTPS选项中的代理。点击下面的应用并重新启动。你已准备好出发。 :)

0

为了解决在泊坞窗构建卷曲的问题,我添加了Dockerfile内的以下内容:

ENV http_proxy=http://infoprx2:8080 
ENV https_proxy=http://infoprx2:8080 
RUN apt-get update && apt-get install -y curl vim 

注意,ENV语句之前运行的语句。

,为了使泊坞窗守护程序能够访问互联网(我用kitematic与boot2docker),我增加了以下内容的/ var/lib中/ boot2docker /简介:

export HTTP_PROXY=http://infoprx2:8080 
export HTTPS_PROXY=http://infoprx2:8080 
0

中的配置文件boot2docker应该是/var/lib/boot2docker/profile,编辑这个文件到自定义http(s)代理。

相关问题