読者です 読者をやめる 読者になる 読者になる

Docker for mac で nginx を起動するサンプルが動かないとき

docker

Docker for mac 入れる

docs.docker.com

こちらを参考にして入れてみる。

さくっとstableのdmgをDLしてインストール

Version

% docker --version
Docker version 1.13.1, build 092cba3
% docker-compose --version
docker-compose version 1.11.1, build 7c5d5e4
% docker-machine --version
docker-machine version 0.9.0, build 15fd4c7

Step 3 でエラーが起きる

nginxイメージを起動できない。

% docker run -d -p 80:80 --name webserver nginx
Unable to find image 'nginx:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.65.1:53: server misbehaving.
See 'docker run --help'.

githubのissueにもある問題っぽい

github.com

matsnow.hatenablog.com

で、上記の参考にさせてもらったブログを見ると、betaにすると治ったらしいのでbetaにする (stableをuninstallしてbetaをDL、インストール)

% docker --version
Docker version 1.13.1, build 092cba3
% docker-compose --version
docker-compose version 1.11.1, build 7c5d5e4
% docker-machine --version
docker-machine version 0.9.0, build 15fd4c7

変わらないようにみえる…

気を取り直して再実行

% docker run -d -p 80:80 --name webserver nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
5040bd298390: Pull complete
333547110842: Pull complete
4df1e44d2a7a: Pull complete
Digest: sha256:f2d384a6ca8ada733df555be3edc427f2e5f285ebf468aae940843de8cf74645
Status: Downloaded newer image for nginx:latest
62ed7ad57e72753812205e627cb9b35ae0ee66a54a51bd4f895cf1ede9337628

入った。 が、 http://localhost:80/ を叩いても接続できない。 docker ps を叩いても、ちゃんと大丈夫そうに見える。

% docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
89ec878940a4        nginx               "nginx -g 'daemon ..."   12 minutes ago      Up 12 minutes       0.0.0.0:80->80/tcp, 443/tcp   webserver

Mac本体のportを見てもListenしてるように見える。

% sudo lsof -i -P | grep LISTEN | grep 80rpcbind     280         daemon    4u  IPv4 0x7fa9588305b9f605      0t0  TCP *:111 (LISTEN)
// 略
com.docke 35368            edy   25u  IPv4 0x7fa958831ccb1605      0t0  TCP *:80 (LISTEN)
// 略

stackoverflowに聞いてみると同様の人がいる。

stackoverflow.com

http://127.0.0.1 だと動くかもっていう話だったから試したら動いた。マジで…。 そもそもnginxの設定にlocalhostで受けるようになってないだけ?

2017/02/18追記

ホストMacのhostsにlocalhostIPv6で解決する記述があったため、これをコメントアウトしたら動いた。

% cat /etc/hosts
# 略
#::1     localhost

本来はまともにIPv6対応すべきなんだと思いますが、開発環境構築で頑張るのは面倒でコメントアウトでお茶を濁す。。

docs.docker.com