Things of interesting

プログラミングに関する技術ネタの備忘録

Proxy環境下でdocker toolbox + docker-compseを使えるようにする(windows7)

やること

普段はMac+Docker for Macの環境でアプリ開発を行っているのですが、会社内のプロキシネットワーク下+Windows7の環境でDockerを使えるようにする設定です。

Docker Toolboxのインストール

公式サイトからダウンロードしてインストールします。

Docker Toolbox | Docker

Docker Quickstart Terminal というソフトウェアもインストールされるので実行するとターミナルが開きます。以降の作業はこのターミナルで行います。

Dockerプロジェクトの作成(docker-compose)

以下ファイルを作成して適当な作業ディレクトリに配置します。

docker-compose.yml

hello:
  image: hello-world:latest

NOプロキシ設定と動作確認

以下NO_PROXY設定をexportします。小文字が大事!

$ export no_proxy=192.168.99.100

docker-compose up コマンドで hello_1 | Hello from Docker! が表示されたら成功です。

$ cd ${docker-compose.ymlを置いたディレクトリ}
$ docker-compose up

プロキシ設定は既に設定済みの前提なので最終形は以下のようになります。
※自身のプロキシサーバーが設定されていることを確認してください。

$ env | grep proxy 
http_proxy=http://login:plainpassword@proxy.corp.com:8000
https_proxy=http://login:plainpassword@proxy.corp.com:8000
no_proxy=192.168.99.100

はまったところ

DockerToolboxインストール後にターミナルでdocker psを打つと Forbiddenになりました。

$ docker ps
error during connect: Get https://192.168.99.100:2376/v1.33/containers/json: Forbidden

ネットで探すとNO_PROXYの設定でいけるとのことで設定するとうまくいきました。

$ export NO_PROXY=192.168.99.100
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED
STATUS              PORTS               NAMES

しかし、docker-compose は繋がりません。

$ docker-compose --verbose up
(省略)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='192.168.99.100', port=
2376): Max retries exceeded with url: /v1.21/version (Caused by ProxyError('Cann
ot connect to proxy.', error('Tunnel connection failed: 403 Forbidden',)))
Failed to execute script docker-compose

小一時間悩んだ後、小文字にしたらいけました。。。

まとめ

docker toolbox:windows の no_proxy は、dockerコマンドは大文字でもOKですが、docker-composeは小文字じゃないとダメ!
※バージョンに依存する問題なのかもしれません。以下のバージョンを利用する際は参考にしてみてください。

$ docker-compose.exe -v
docker-compose version 1.16.1, build 6d1ac219

$ docker -v
Docker version 17.10.0-ce, build f4ffd25