概要
いままで
up したコンテナから run したコンテナに名前解決できなかった。
up した時を想定して run したコンテナに繋がって欲しいときもあるはず。
これから
1.20.0 から入るオプション --use-aliases
を使うことで解決できるようになる模様
Added the
--use-aliases
flag todocker-compose run
, indicating that
network aliases declared in the service's config should be used for the
running container
Docker for Mac にバンドルされてる composeは1.18.0なのでまだオプションが使えない(2018/03/25現在)(他の環境は知らない)
確認
docker-compose のバージョン
$ docker-compose version
docker-compose version 1.18.0, build 8dd22a9
docker-py version: 2.6.1
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2j 26 Sep 2016
docker-compose.yml
version: '2'
services:
alpine1:
image: alpine
container_name: alpine1
command: sh -c "while true;do sleep 1; ping alpine2;done"
alpine2:
image: alpine
container_name: alpine2
これまで
挙動
alpine1をupで立ち上げた時
$ docker-compose up alpine1
Starting alpine1 ... done
Attaching to alpine1
alpine1 | ping: bad address 'alpine2'
alpine1 | ping: bad address 'alpine2'
.
.
.
alpine2をrunで立ち上げる
$ docker-compose run --rm alpine2 /bin/sh
alpine1の状況
.
.
.
alpine1 | ping: bad address 'alpine2'
alpine1 | ping: bad address 'alpine2'
.
.
.
これから
compose@1.20.0に更新する
$ curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ docker-compose version
docker-compose version 1.20.0, build ca8d3c6
docker-py version: 3.1.3
CPython version: 3.6.4
OpenSSL version: OpenSSL 1.0.2n 7 Dec 2017
挙動
alpine1をupで立ち上げた時
$ docker-compose up alpine1
Starting alpine1 ... done
Attaching to alpine1
alpine1 | ping: bad address 'alpine2'
alpine1 | ping: bad address 'alpine2'
.
.
.
alpine2をrunで立ち上げる
$ docker-compose run --rm --use-aliases alpine2 /bin/sh
alpine1の状況
.
.
alpine1 | ping: bad address 'alpine2'
alpine1 | ping: bad address 'alpine2'
alpine1 | PING alpine2 (172.19.0.3): 56 data bytes
alpine1 | 64 bytes from 172.19.0.3: seq=0 ttl=64 time=1033.162 ms
alpine1 | 64 bytes from 172.19.0.3: seq=1 ttl=64 time=24.807 ms
alpine1 | 64 bytes from 172.19.0.3: seq=2 ttl=64 time=0.115 ms
alpine1 | 64 bytes from 172.19.0.3: seq=3 ttl=64 time=0.105 ms
alpine1 | 64 bytes from 172.19.0.3: seq=4 ttl=64 time=0.084 ms
.
.
名前解決できるようになった。嬉しい。
嬉しかったので確認がてら書き留めた。
参考
-
Dockerのブリッジ・ネットワークでのコンテナ間名前解決がどうなっているのか見てみた
- docker-composeの構成と、元々名前解決の記事として大変為になりました
- compose@1.20.0