2
2

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のネットワーク(bridge, host, none)の違いについて言語化が怪しかったので、体系的にまとめてみた

Posted at

はじめに

Docker のネットワーク機能は、コンテナ間やホストとの通信を管理するために提供されています。

用途に応じたネットワークモードを選択することで、安全かつ効率的な通信を実現できます。

本記事では、Docker のネットワークタイプや管理方法について解説します。

書こうと思ったきっかけ

Docker を使う中で、コンテナ間の通信がうまくいかないことがありました。

また、ネットワーク設定によって動作が変わることを知り、理解を深める必要があると感じました。

そこで、Docker のネットワークの種類や管理方法を整理しておくことにしました。

Dockerのネットワークタイプ

Dockerには以下の主要なネットワークモードがあります。

① bridge(デフォルト)

  • コンテナは仮想ブリッジ(docker0)を介して通信する。
  • コンテナ同士は同じブリッジネットワーク内で通信可能。
  • 外部ネットワークと通信するには、ポートフォワードが必要(-pオプション)。

使用例:

docker network create my_bridge
docker run -d --name container1 --network my_bridge nginx
docker run -d --name container2 --network my_bridge alpine ping container1

② host

  • コンテナがホストのネットワークを直接使用する。
  • localhost でコンテナのサービスにアクセス可能。
  • コンテナ間の分離がないため、セキュリティ上のリスクがある。

使用例:

docker run --rm --network host nginx

③ none

  • ネットワークを完全に無効化し、外部との通信を遮断する。

使用例:

docker run --rm --network none alpine

Dockerネットワークの管理コマンド

Dockerネットワークを操作するための主なコマンドを紹介します。

ネットワークの一覧表示

docker network ls

ネットワークの詳細情報

docker network inspect <network_name>

ネットワークの作成

docker network create <network_name>

ネットワークの削除

docker network rm <network_name>

コンテナをネットワークに接続

docker network connect <network_name> <container_name>

コンテナをネットワークから切断

docker network disconnect <network_name> <container_name>

Docker Compose でのネットワーク設定

Docker Compose を使うと、複数のコンテナを簡単にネットワークで接続できます。

docker-compose.yml の例:

version: '3'
services:
  web:
    image: nginx
    networks:
      - my_network
  app:
    image: my_app
    networks:
      - my_network
networks:
  my_network:
    driver: bridge

ネットワークのトラブルシューティング

コンテナ間で通信できない

  • docker network inspect <network_name> でコンテナが適切なネットワークに接続されているか確認。
  • iptables の設定を確認 (sudo iptables -L -n)

ホストからコンテナに接続できない

  • docker run -p 8080:80 nginx のようにポートフォワード設定が正しいか確認。
  • docker ps で実行中のコンテナのポートを確認。

DNS 解決ができない

  • docker run --rm busybox nslookup google.com で外部DNSが解決できるかテスト。
  • --dns オプションを使って手動で設定可能:
docker run --rm --dns 8.8.8.8 busybox nslookup google.com

まとめ

Dockerのネットワークは用途に応じて適切なものを選ぶことが重要です。特に、bridge は一般的に使われるモードですが、host はパフォーマンスの面で有利な場合もあります。

ネットワークモード 特徴
bridge デフォルト、コンテナ同士の通信可、ポートマッピング必要
host ホストのネットワークを使用、ポートマッピング不要
none ネットワークなし、完全に孤立

none は完全にネットワークを遮断したい場合に便利です。

この違いを使いこなせるようになるまで時間がかかるかもしれませんが、私も積極的にアウトプットしながら、体系的にまとめていきます!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?