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

概要

いままで

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
.
.

名前解決できるようになった。嬉しい。
嬉しかったので確認がてら書き留めた。

参考

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.