web-dev-qa-db-ja.com

Docker / Boot2Docker:OS XでdockerのHTTP / HTTPSプロキシを設定する

要するに:Mac OS XでDockerのHTTP/HTTPSプロキシを設定するにはどうすればよいですか?

詳細

プロキシの背後でMac OS XでDocker(1.12)を実行しています。 インストール手順 に従ってboot2dockerをインストールしました。ネットワーク内部のDockerレジストリからプルする場合、これは正常に機能しています。

ただし、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を実行) 3つすべてを表示します)。

注2:デーモンが正しく実行されていないときにこのエラーが発生することを他の記事で読みました。ただし、_docker version_は問題を示しません。さらに、ネットワーク内部のDockerレジストリからプルしたイメージをプルして実行できます。

注3Red Hat Linux (RHEL)でDockerをセットアップできました。プロキシ情報を_/etc/sysconfig/docker_に追加する必要がありました。 Ubuntuに同様のファイル(_/etc/init/docker.conf_)があることを読みました。しかし、Mac OS XでDocker(またはboot2docker?)のファイルを見つけることができませんでした。

39
rrhrg

変更する必要がある設定ファイルはOS Xファイルシステム上になく、ローカルDockerサーバーとして機能するTiny Core Linux VMに接続されます。

そのためのプロキシを構成するには、まずアプリケーションからBoot2dockerを起動します。開始したら、ターミナルウィンドウを取得してVMにsshします。

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を作成/変更して、プロキシ情報を設定します。

docker@boot2docker:~$ 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 dockerサービスを再起動してVMを終了できます。

docker@boot2docker:~$ Sudo /etc/init.d/docker restart
docker@boot2docker:~$ 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にはプロキシのグローバルな設定がありますが、そこで試したものは何も機能しません。

98
Mike Blecha

最近(2015年8月)1.8リリースの時点で、boot2docker VMを含むdockerホストを作成するdockerの推奨方法は、docker-machineユーティリティを使用することです。

また、バージョン1.8以降、docker-machineは、次のような呼び出しによるVM作成時のプロキシの構成をサポートするようになりました。

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

これにより、指定された環境変数が初期化ファイル/ var/lib/boot2docker/profileにすでに追加されているVM-手動で追加する必要がなくなります。

18
avallen

Docker for Mac を使用していて、プロキシ環境の背後にいる場合。

上部のメニューバーのドッカーアイコンをクリックします。 (ステップ1.3に示すように here

Preferences > Advancedに移動し、そこでHTTPおよびHTTPSオプションでプロキシを設定します。その下の[適用して再起動]をクリックします。準備できた。 :)

1

.profileファイルにプロキシ設定を設定することで、この問題を解決しました。

docker@boot2docker:~$ vi ~/.profile

最後にプロキシを追加します。

#
PS1='\u@\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を再起動します。

1
foxwmj

Docker buildのcurlの問題を解決するために、Dockerfile内に次を追加しました。

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

ENVステートメントはRUNステートメントの前にあることに注意してください。

そして、Dockerデーモンがインターネットにアクセスできるようにするために(私はboot2dockerでkitematicを使用しています)、以下を/ var/lib/boot2docker/profileに追加しました:

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

Boot2dockerの構成ファイルは/var/lib/boot2docker/profile、このファイルを編集してカスタムhttp(s)プロキシにします。

0
smartwjw