初めまして、何度もQiitaからの役に立つ記事を得ました。ありがとうございます。自分の経験もシェアさせていただきます。
今回は、掲題のように、極端Proxy下dockerの利用経過を簡単にメモします。
docker-machineはWindows 7で利用しています。
1. PROXYパスワード自動入力
まず自作ツールproxy-login-automatorで、偽のローカルProxyサーバを作成し、それを介して実際のProxyサーバとやり取りする。そのうち、自動的にパスワードに入れる感じ。
node proxy-login-automator.js \
-local_host "*" \
-local_port 65525 \
-remote_host RealHost \
-remote_port 80 \
-usr ProxyUserIdHerer \
-pwd ProxyPasswordHere \
-as_pac_server true
-local_host "*"
は重要です。docker-machineのブリッジカード192.168.99.1をLISTENしたいためです。(とにかく、docker-machineからもPCからもアクセスできる共同アドレスであればいい)真のProxyサーバはPAC(プロキシ自動設定)ファイルを提供しているので、偽サーバもas_pac_server trueで同じ機能を提供する。
そして、docker hubのサイトへアクエセウしてみて、先ほどのコマンドの出力には、「新たに、ポートnnnnnで普通のProxy機能を提供する」のような情報を確認して、そのポート番号をメモする。例えば65526。
2.docker-machineを作成
ここでproxy情報はhttp://docker-machinのブリッジアダプターIP
:先ほどメモリしたポート
。
docker-machine create -d virtualbox \
--engine-env HTTP_PROXY=http://192.168.99.1:65526 \
--engine-env HTTPS_PROXY=http://192.168.99.1:65526 \
--engine-env NO_PROXY="localhost,127.0.0.1,192.168.99.*" \
--virtualbox-disk-size "100000" \
--virtualbox-cpu-count 2 \
--virtualbox-memory 1500 \
default
(docker-machineを再作成したくないですが、ローカルでHTTPS_PROXYなどを設定すればdockerコマンドを利用する試しは失敗)
こうして、docker runは一歩進んだ、ただし、信頼できないコンテンツ、証明証はダメですみたいなエラーが出た。(具体的なメッセージは忘れってしまった)。
あ、これはProxyサーバはSSL通信を監視するために、すべてのWebサーバの証明書を置き替えたから。
普通はProxyサーバの証明書をローカルマシンにROOT信頼機関として導入したので、ブラウザーは問題ない。docker-machine中にも導入必要です。
3. docker-machineにProxyサーバの証明書を導入
ブラウザ(例えばfirefox)のアドレスバー左アイコンからサイトの証明を見れます。その証明書をエクスポートして、形式は「BASE64のCER」で良い。まあ、結果はBASE64テキストBEGIN CERTIFICATE...であればOKです。
その名前の拡張子をPEMに変更。
-
docker-machineにコピー
docker-machine ssh
cd /var/lib/boot2docker/ sudo mkdir certs sudo cp /c/Users/Download/THE_PEM_FILE.pem certs/
docker-machine restart
これで完了。
2016/09/14追加:
4. Docker container中でProxy経由でgitを利用する時の設定
さらに一層設定ですね。
~/.gitconfigに以下を追加
[http]
proxy = http\://192.168.99.1:65526
以上です。