2014-06-30 51 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)代理。

相關問題