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?

# Docker ネットワーク備忘録

1
Posted at

Docker ネットワーク備忘録

Docker ネットワークについて調べた際の備忘録です。

1. Docker ネットワークの基本概念

  • Docker コンテナは Linux Namespace によりネットワーク空間が分離されている。
  • 各コンテナは独自のネットワークスタック(IP、ルーティングテーブルなど)を持つ。
  • ホスト側には docker0 という 仮想ブリッジ が作成され、コンテナの veth(仮想 NIC)が接続される。

2. NAT による外部アクセス

  • コンテナは通常 プライベート IP(例: 172.17.x.x) を持つ。
  • 外部からアクセスするには ポートフォワーディング(-p) を使う。
  • 例:docker run -d -p 8080:80 nginx
    → ホストの 8080 にアクセスするとコンテナの 80 に届く。

3. Docker ネットワークの種類

① bridge(デフォルト)

  • コンテナは docker0 ブリッジに接続される。
  • デフォルト bridge(docker0)ではコンテナ名で名前解決できない。
  • docker network create で作成した ユーザー定義 bridge では DNS が有効になり、コンテナ名で通信可能。
  • 同じユーザー定義 bridge 内のコンテナはプライベート IP または名前で通信できる。

② host

  • コンテナがホストのネットワークスタックをそのまま利用。
  • ポートフォワーディングは無効。

③ none

  • ネットワークなし(lo のみ)。

④ overlay

  • 複数ホスト間でコンテナを接続するネットワーク。
  • Docker Swarm などの分散環境で利用。

4. コンテナ間通信の仕組み

同じネットワークに属する場合

  • プライベート IP またはコンテナ名で通信可能(ユーザー定義 bridge の場合)。
  • 例:ping web2

異なるネットワークに属する場合

  • デフォルトでは通信不可。
  • 対応方法:
    • ネットワークを統一する
    • または docker network connect を使い、コンテナを複数ネットワークに所属させる

5. docker-compose でのネットワーク

  • docker-compose はプロジェクトごとに ユーザー定義 bridge を自動作成。
  • そのため、同じ compose 内のサービスは コンテナ名で名前解決可能
  • 特別な設定をしなくてもサービス間通信が容易。
1
0
1

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?