概要
docker-compose.ymlで定義したコンテナは同じネットワーク下に置かれる。コンテナは互いにその名前でアクセスできる。
/var/www/container1# ping container2
64 bytes from ...省略
docker-compose.yml
こんなときコンテナ1から2にアクセスしたい。
docker-compose.yml
version: "3"
services:
container1:
build:
context: ./docker/container1
ports:
- "3000:3000"
container2:
build:
context: ./docker/container2
ports:
- "8080:80"
なぜか
ネットワーク内のDNSサーバーが立っていて名前解決をしている。
通常コンテナからホストマシンのローカルipにはアクセスできないが、DNSサーバーがコンテナごとに割り当てられたポートで名前解決してくれる✨
(digコマンドで動いているDNSサーバーがわかる)
おまけ
直接コンテナ内のhostsにipとドメインを書いて名前解決する方法。
ホストマシンのipアドレスはwifiの設定でip4・ip6で動的に変わったりするので意図せず開発環境が動かなくなる可能性あり。
docker-compose.yml
# ports:
# - "8080:80"
extra_hosts:
- "localhost-dev:${ホストマシンのipアドレス}"