鱒身(Masu_mi)のブログ

知った事をメモする場所。

boot2docker を導入する時にNAT設定が必要だった

DockerをOSXから使える様にまとめてくれている エントリ があった。

以前 Docker に挑んで少し触ったくらいで追ってなかったのだけれど、 エントリによると最近は boot2docker なんてコマンドがあり Docker 用に色々やってくれるらしい。 dokku で個人 Heroku 作りたいのもあり試してみた。

エントリ通りにしたら2箇所で躓いたのでメモしておく。

トラブル

  1. OSX上で docker version が失敗した
  2. docker pull dockerfile/ghost が失敗した
$ docker version
Client version: 0.11.1
Client API version: 1.11
Go version (client): go1.2.1
Git commit (client): fb99f99
2014/06/07 13:41:59 Get http://localhost:4243/v1.11/version: EOF
$ docker pull dockerfile/ghost
...
... : dial tcp: lookup index.docker.io on 172.20.10.1:53: no answer from server

解決方法

OSX上で docker version が失敗した

VirtualBoxのネットワーク::NAT::ポートフォワーディング設定をする。

../../../_images/vm_nat_port_forwarding.png

以下みたいな事をVirtualBoxの管理のもと行なっている

$ssh -L 4243:local:2375 localhost -p 2022

docker pull dockerfile/ghost が失敗した

DNSの指定を修正して再起動した。

$ boot2docker ssh
docker@boot2docker:~$ vi /etc/resolv.conf
## 以下を追加
## nameserver 8.8.8.8
docker@boot2docker:~$ cat /etc/resolv.conf
nameserver 8.8.8.8
docker@boot2docker:~$ exit
$ boot2docker restart

調査内容

OSX上で docker version が失敗した

  1. telnet localhost 4243 が拒否される事を確認した
  2. boot2docker-vm にログインして docker version が成功する事を確認した
  3. docker が開いているポート一覧を確認した
$ telnet localhost 4243
[masumi(%3)@air-trout blog]$ telnet localhost 4243
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
$ boot2docker ssh
docker@boot2docker:~$ docker version
..
docker@boot2docker:~$ ps aux | grep docker
624 root     /usr/local/bin/docker -d -D -g /var/lib/docker -H unix:// -H tcp://0.0.0.0:2375

docker pull dockerfile/ghost が失敗した

エラーメッセージでググったら以下が見つかったので試してみた。