Posted at

docker-compose run で 起動されたコンテナが名前解決されなかったのがされるようになる話

More than 1 year has passed since last update.


概要


いままで

up したコンテナから run したコンテナに名前解決できなかった。

up した時を想定して run したコンテナに繋がって欲しいときもあるはず。


これから

1.20.0 から入るオプション --use-aliases を使うことで解決できるようになる模様

https://github.com/docker/compose/releases/tag/1.20.0


Added the --use-aliases flag to docker-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
.
.

名前解決できるようになった。嬉しい。

嬉しかったので確認がてら書き留めた。


参考