カスタムブリッジネットワークとサービスディスカバリ
ユーザー定義ブリッジネットワークを作成し、コンテナ同士が名前で見つけて通信できるようにします。DockerによるDNSベースのサービスディスカバリの仕組みも学びます。
「カスタムブリッジネットワークとサービスディスカバリ」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
カスタムネットワークが必要な理由
デフォルトのbridgeネットワークでも動作しますが、そこに接続されたコンテナ同士はIPアドレスでしか通信できません。ユーザー定義ブリッジネットワークを使うと、DNSによるサービスディスカバリが自動的に機能し、コンテナ同士が名前で通信できるようになります。
- アプリケーション群間の分離が向上する
- 名前解決が組み込まれている
- コンテナを実行中に接続・切断できる
既存ネットワークの一覧表示
Dockerには3つのデフォルトネットワークが用意されています。独自のネットワークを作成する前に、docker network lsで確認しましょう。
docker network lsブリッジネットワークの作成
docker network createを使います。ドライバーフラグを指定しない場合、Dockerはデフォルトでbridgeドライバーを使用します。これは単一ホスト上のコンテナに適しています。
docker network create app-netネットワークの確認
docker network inspectを使うと、サブネット、ゲートウェイ、接続されているコンテナがJSON形式で表示されます。IP範囲のデバッグに便利です。
docker network inspect app-netネットワーク上でのコンテナ実行
--networkを使うと、起動時にコンテナをネットワークへ接続できます。ここでは、他のコンテナが名前で見つけられるRedisコンテナを起動します。
docker run -d --name cache --network app-net redis:7名前によるサービスディスカバリ
ユーザー定義ネットワークでは、Docker DNSによってコンテナの名前が解決されます。アプリケーションはIPアドレスを探す代わりに、ポート6379のホストcacheへ接続するだけで済みます。
docker run -it --network app-net alpine ping -c 2 cacheネットワークエイリアス
--network-aliasを使うと、コンテナに追加のDNS名を付けられます。ラウンドロビンの背後で複数のコンテナが1つの論理名に応答する場合に便利です。
docker run -d --network app-net --network-alias db postgres:16実行中のコンテナの接続
起動時にすべてを決めておく必要はありません。docker network connectを使うと、すでに実行中のコンテナを別のネットワークに接続できます。
docker network connect app-net webネットワークからの切断
同様に、docker network disconnectを使うと、コンテナを停止せずにネットワークから切断できます。
docker network disconnect app-net web公開とポート公開の違い
同じカスタムネットワーク上のコンテナは、任意のポートで自由に通信できます。ホストからサービスへ接続するには、-p hostPort:containerPortでポートを公開します。
docker run -d --network app-net -p 8080:80 nginxネットワークのクリーンアップ
使っていないネットワークはdocker network rmで削除するか、未使用のネットワークを一度にすべてプルーニングできます。コンテナが接続されているネットワークは、先にそのコンテナを削除しないと削除できません。
docker network prune -f理解度チェック
サービスディスカバリについて理解できたか確認しましょう。
まとめ
カスタムブリッジネットワークの作成と管理方法を学びました。
docker network createで、DNS機能を備えた分離ネットワークを作成する- コンテナ同士は名前または
--network-aliasで通信する connect/disconnectでコンテナを実行中に接続・切断する-pでポートを公開し、使っていないネットワークをプルーニングする
名前によるサービスディスカバリは、Composeが自動的に構築する仕組みの基盤です。
よくある質問
「カスタムブリッジネットワークとサービスディスカバリ」レッスンは無料ですか?
はい。「カスタムブリッジネットワークとサービスディスカバリ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「カスタムブリッジネットワークとサービスディスカバリ」で何を学びますか?
ユーザー定義ブリッジネットワークを作成し、コンテナ同士が名前で見つけて通信できるようにします。DockerによるDNSベースのサービスディスカバリの仕組みも学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「カスタムブリッジネットワークとサービスディスカバリ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- コンテナネットワークの基礎
- 永続化のためのDockerボリューム
- バインドマウントとtmpfsマウント
- カスタムブリッジネットワークとサービスディスカバリ