windows7
docker
docker-compose
docker-machine

プロキシ環境下のHyper-Vが利用できないWindows7でDockerを使うときのメモ

経緯

ローカルの検証環境としてDockerを利用したかったのですが、複数の問題があり苦戦しました。そのときのメモです。

状況

  • プロキシ環境下(こいつのせいで苦労を…!)
  • 支給されているPC(Windows7)がHyper-Vが利用できない

ツールの選定

Hyper-Vが利用できない為、Virualbox+Dockertoolboxの組み合わせを選定しました。
使えていれば、Docker for Windowsを使えば済んだ気がします。

セットアップ

各ツールのインストール

デフォルト設定でインストールすれば大丈夫でした。

Dockerマシンの作成

プロキシが絡んでいるので、少し手を加える必要があります。

start.shの編集

Dockertoolboxのインストール先(デフォルトはProgramFile配下)にstart.shというスクリプトがあるので、スクリプト冒頭部分でプロキシ用の変数を宣言します。

#!/bin/bash

export HTTP_PROXY=http://[プロキシホスト]:[プロキシポート]  # 追記
export HTTPS_PROXY=${HTTP_PROXY}                    # 追記

docker-machine create

コマンドプロンプトで実行します。(ここ重要)

> SET HTTP_PROXY=http://[プロキシホスト]:[プロキシポート]
> SET HTTPS_PROXY=http://[プロキシホスト]:[プロキシポート]
> docker-machine create -d virtualbox default

start.shのプロキシ設定がきちんと働いていれば、無事に作成されるはず。
一旦、コマンドプロンプトを終了します。

Docker Quickstart Terminalの設定

今後は一緒にインストールされたこっちのターミナルで作業することにします。
とりあえず、このターミナルにもプロキシ設定を導入してあげます。
ターミナルを起動します。

$ vi .bash_profile
--- 以下を追記 ---
export HTTP_PROXY=http://[プロキシホスト]:[プロキシポート]
export HTTPS_PROXY=${HTTP_PROXY}
export NO_PROXY=localhost,127.0.0.1,192.168.99.100
--- ここまで ---
$ source .bash_profile

上記で NO_PROXY に指定してる 192.168.99.100 はDockerマシンの仮想環境が利用するIPです。(docker-machine lsで確認可能)

仮想マシンのプロキシ設定も更新

$ docker-machine ssh
--- 仮想環境に入る ---
$ sudo vi /var/lib/boot2docker/profile
--- 以下の追記 ---
export HTTP_PROXY=http://[プロキシホスト]:[プロキシポート]
export HTTPS_PROXY=$HTTP_PROXY
export NO_PROXY=localhost,127.0.0.1,.sock
--- ここまで ---
$ sudo /etc/init.d/docker restart
$ exit
--- 仮想環境から抜ける ---

やっとDockerが使える…が

docker buildで通信するときに死にます…。
ので、Dockerfileでyumとか使う場合は、以下の記載をお忘れなく!

ENV HTTP_PROXY http://[プロキシホスト]:[プロキシポート]
ENV HTTPS_PROXY ${HTTP_PROXY}
ENV http_proxy ${HTTP_PROXY}
ENV https_proxy ${HTTP_PROXY}

小文字の変数も用意してあげないと、rpmやらyumやらでコケるようです。

あとがき

同じような環境で導入に苦しんだ方のヒントになればと思います。
結構、試行錯誤したので、誤っている内容があるかもしれませんが、大体の設定した箇所のメモとなります。