こんにちは、オークファンの @dz_ こと大平かづみです。
Prologue - はじめに
最近、Docker に興味を持ち、Dockerfile, Docker Compose と勉強を進め、 やっと Docker Swarm の勉強を始めました。
そこで、いつも使っている Docker用のコンテナ default
以外のVMを立てて作業をしていると、 docker run
ができない(Dockerイメージがダウンロードできない)状態に陥り、ちょっと迷いましたので備忘録を記しておきます。
エラー内容
今回は、 agent1
というVMに Swarm のイメージをダウンロード・起動しようとして、以下のエラーが発生しました。
VM(agent1)でイメージがダウンロードできないエラー
$ docker run -d swarm join --addr=<node_ip>:2376 token:<token>
Unable to find image 'swarm:latest' locally
Pulling repository docker.io/library/swarm
docker: Error while pulling image: Get https://index.docker.io/v1/repositories/library/swarm/images: dial tcp: lookup index.docker.io on [::1]:53: read udp [::1]:56512->[::1]:53: read: connection refused.
See 'docker run --help'.
対処
このエラーは、どうやら VM の中から、DNS が引けずにエラーとなっているようです。下記に、DNSによる接続エラーについての解消方法が記載されていました。
対処手順
まず、対象の VM にログインします。
VM(agent1)にログインする
$ docker-machine ssh agent1
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.11.1, build HEAD : 7954f54 - Wed Apr 27 16:36:45 UTC 2016
Docker version 1.11.1, build 5604cbe
そして、 /etc/resolv.conf
に nameserver 8.8.8.8
を追加します。
nameserverを追加する
docker@agent1:~$ echo "nameserver 8.8.8.8" >> /etc/resolv.conf
正常に /etc/resolv.conf
を更新できたら、VMからログアウトします。
VMからログアウトする
docker@agent1:~$ exit
ここまでできたら、再度 docker run
を実行すると、問題なく実行できるようになってると思います。
、
Epilogue - おわりに
まだ見よう見まねで小さなところにつまづいてしまいますが、Dockerコンテナを使いこなしたいので勉強に励みます。