チュートリアルを見ながらDocker Toolboxで遊ぼうとしたらProxy設定ではまりました。
Docker Quickstart Terminalで docker run hello-world
してもエラー。
docker-machineにProxy設定が入っていないのが原因でした。
環境
- Windows7
- Docker Toolbox 1.11.1
- Proxy通さないと外にいけないネットワーク
Proxyが有効になったdocker-machineを作成しなおす
Docker Quickstart Terminalを起動すると、最初に default という docker-machine が作られます。これにProxy設定が入っていないので、dokcer run hello-world
で hello-world の dockerイメージを取りに行けていませんでした。
Docker Quickstart Terminalが起動するstart.sh を読んだところ、環境変数 HTTP_PROXY, HTTPS_PROXY, NO_PROXYを設定してあればそれらを使って docker-machine を作ってくれそうなのでやってみます。
まず、すでに作成されたdefaultのdocker-machineを削除。
$ docker-machine rm -f default
Windowsで以下になるように環境変数を設定する。
HTTP_PROXY=http://your-proxy:port/
HTTPS_PROXY=http://your-proxy:port/
NO_PROXY=127.0.0.1
で、Docker- Quickstart Terminalをいざ実行。
…なんか、boot2docker自体をupdateしてくれました。
Running pre-create checks...
(default) Default Boot2Docker ISO is out-of-date, downloading the latest release
...
(default) Latest release for github.com/boot2docker/boot2docker is v1.12.1
(default) Downloading C:\Users\user\.docker\machine\cache\boot2docker.iso from
https://github.com/boot2docker/boot2docker/releases/download/v1.12.1/boot2docke
r.iso...
(default) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....1
00%
Creating machine...
(略)
起動したら確認。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DO
CKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v1.12.1
いざ docker run
$ docker run hello-world
C:\Program Files\Docker Toolbox\docker.exe: An error occurred trying to connect:
Post https://192.168.99.100:2376/v1.23/containers/create: CONNECTnotallowed.
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
あら?
docker-mchineの192.168.99.100にもproxy経由でいこうとしていたんでした。docker-machineのIPをNO_PROXYに追加します。
$ export NO_PROXY=$NO_PROXY,192.168.99.100
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c04b14da8d14: Pull complete
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
無事にhello-worldできました。
sshでdocker-machineに入って確認したら、ちゃんとproxy設定できています。
docker@default:~$ cat /var/lib/boot2docker/profile
EXTRA_ARGS='
--label provider=virtualbox
'
CACERT=/var/lib/boot2docker/ca.pem
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_STORAGE=aufs
DOCKER_TLS=auto
SERVERKEY=/var/lib/boot2docker/server-key.pem
SERVERCERT=/var/lib/boot2docker/server.pem
export "HTTP_PROXY=http://www-proxy.sra.co.jp:80/"
export "HTTPS_PROXY=http://www-proxy.sra.co.jp:80/"
export "NO_PROXY=127.0.0.1"
docker-toolbox Troubleshooting
ドキュメントにちゃんと書いてありますね。
https://docs.docker.com/toolbox/faqs/troubleshoot/#/http-proxies-and-connectivity-errors