1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

コンテナ同士の通信について

Last updated at Posted at 2020-10-13

概要

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アドレス}"
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?