1.1 ネットワークドライバー: Bridge
Dockerネットワークドライバーは、コンテナ同士および外部ネットワークとの通信を可能にするよ。Dockerはいくつかのネットワークドライバーを提供していて、それぞれの特性があって特定の利用シナリオに適しているんだ。この講義では、4つの主要なネットワークドライバーについて話すね:bridge, host, none, overlay。
BridgeネットワークドライバーはDockerのデフォルトネットワークドライバーだよ。これはプライベートな内部ネットワークを作成して、コンテナ同士が通信できるようにする機能があるんだ。このネットワークはホストの外部ネットワークとは分離されているよ。
特徴:
-
bridge
ネットワークに接続されたコンテナはIPアドレスでお互い通信できるよ。 - 外部ネットワークからは
bridge
ネットワーク内のコンテナに直接通信できないけど、ポートフォワーディングを設定すれば可能になるよ。 - ローカルでの開発やテストシナリオには使いやすいね。
使用例:
ネットワークを指定せずにコンテナを作成した場合、自動的にbridge
ネットワークに接続されるよ。
docker run -d --name my_container nginx
ポートフォワーディングを設定するには-p
フラグを使うよ。
docker run -d -p 8080:80 --name my_container nginx
1.2 ネットワークドライバー Host
ネットワークドライバー host
は、コンテナがホストマシンのネットワークスタックを直接使用できるようにするよ。それってつまり、コンテナがホストと同じIPアドレスを持って、ホストの全てのネットワークインターフェースを使用できるってことさ。
主な特徴:
- ネットワークドライバー
host
を使用するコンテナは、ネットワーク仮想化によるオーバーヘッドが少なくてパフォーマンスが速いんだ。 - コンテナがホストと同じネットワークインターフェースにアクセスできるから、セキュリティリスクが少し高くなるかもしれないんだ。
- ネットワークの高性能や特定のネットワーク設定が必要な場合に適してるよ。
使用例:
docker run -d --network host --name my_container nginx
1.3 ネットワークドライバー None
ネットワークドライバー none
はコンテナのすべてのネットワーク機能を無効化するよ。none
ネットワークに接続されたコンテナはネットワークインタフェースを持たなくて、他のコンテナやネットワークから完全に隔離されるんだ。
特徴:
- コンテナがすべてのネットワークから完全に隔離される。
- ネットワークが必要ないコンテナに便利、例えば、ネットワークに依存しないタスク実行用とかね。
使用例:
docker run -d --network none --name my_container busybox
1.4 ネットワークドライバー Overlay
ネットワークドライバー overlay
は、複数のDockerホストをまたぐ分散ネットワークを作成するために使用されるよ。このドライバーは、Docker SwarmやKubernetesでよく使われてて、異なるホスト上のコンテナ間のネットワーク通信を確保するために便利なんだ。
特徴:
- 異なるホスト上のコンテナ間の通信を可能にする。
- Docker Swarmのようなクラスター設定が必要。
- 既存のネットワーク上に仮想ネットワークを作成でき、高い隔離性とセキュリティを提供する。
使用例:
overlay
ドライバーを使うには、まずDocker Swarmクラスターを設定する必要があるよ。
1. Docker Swarmの初期化:
docker swarm init
2. overlayネットワークの作成:
docker network create -d overlay my_overlay_network
3. overlay
ネットワークに接続してコンテナを起動:
docker service create --name my_service --network my_overlay_network nginx
1.5 ネットワークドライバーの比較
さまざまなネットワークドライバーの比較
ネットワークドライバー | 分離度 | パフォーマンス | 適用性 | 特徴 |
---|---|---|---|---|
bridge | 高い | 適度 | ローカルネットワーク | デフォルトで分離されたネットワーク |
host | 低い | 高い | パフォーマンス | ホストとの共有されたネットワークスタック |
none | 完全 | 最高 | 完全分離 | ネットワークから完全に分離 |
overlay | 高い | 高い | 分散ネットワーク | 異なるホスト上のコンテナ間の通信 |
ネットワークドライバーの使用
-
Bridge
: コンテナが相互作用する必要があるが外部ネットワークから分離されているべき場合、ローカルアプリケーションやテスト用に使用してください。 -
Host
: ネットワークの高パフォーマンスや特定のネットワーク構成が必要で、ネットワーク分離が優先されないアプリケーションに適用してください。 -
None
: ネットワーク相互作用を必要としない完全に分離されたコンテナ用に使用してください。 -
Overlay
: 異なるホスト上のコンテナ間の通信が必要なクラスター内で動作する分散アプリケーション用に使用してください。
GO TO FULL VERSION