Docker Networking: A Beginner's Guide

こんにちは、将来のDockerの達人さんたち!Dockerネットワーキングの興奮する旅にご案内できることを嬉しく思います。私がコンピュータサイエンスを教えてきた年月を考えれば、Dockerネットワークを理解することは新しい都市の賑やかな通りを navigater することのようです - 初めは圧倒されるかもしれませんが、一旦慣れると、地元民のようにスムーズに動くようになるでしょう!

Docker - Networking

Docker Networkingとは?

本題に入る前に、基本から始めましょう。Dockerネットワーキングとは、Dockerコンテナがお互い、そして外部世界と通信する方法です。これをコンテナの郵便システムと考えてください - コンテナがメッセージやデータを送信し、受信する方法です。

すべてのDocker Networkを一覧表示する

私たちの冒険を始めるにあたり、Docker環境で利用可能なネットワークを見つける方法を学びましょう。これは新しい都市の地図を確認して、どの経路を取れるかを確認するようなものです。

すべてのDockerネットワークを一覧表示するには、以下のコマンドを使用します:

docker network ls

このコマンドを実行すると、以下のような出力が表示されます:

NETWORK ID     NAME      DRIVER    SCOPE
9f904ee27bf5   bridge    bridge    local
95e74588f40d   host      host      local
6dd90d006c9b   none      null      local

これを分解すると:

  • NETWORK ID: 各ネットワークのユニークな識別子
  • NAME: ネットワークの名前
  • DRIVER: 使用されるネットワークドライバー(後ほど詳しく説明します)
  • SCOPE: ネットワークのスコープ(Dockerホストまたはスウォームにローカル)

Docker Networkを調査する

ネットワークを見つけたので、其一つを詳しく見てみましょう。これは地図上の特定の通りにズームインするようなものです。

Dockerネットワークを調査するには、以下のコマンドを使用します:

docker network inspect [NETWORK NAME]

例えば、デフォルトの 'bridge' ネットワークを調査するには:

docker network inspect bridge

このコマンドは、ネットワークに関する多くの詳細な情報をJSON形式で返します。これはその通りで起こっているすべてのこと - 誰が住んでいるか、家がどんな風かなど、詳細な報告を得るようなものです。

自分で新しいネットワークを作成する

さあ、自分の道を建設する準備ができました!Dockerで新しいネットワークを作成するのは驚くほど簡単です:

docker network create [OPTIONS] [NETWORK NAME]

簡単なブリッジネットワークを作成してみましょう:

docker network create my_awesome_network

おめでとうございます!あなたは初めてのDockerネットワークを作成しました。これはDockerシティに新しい通りを敷設したようなものです。

作成したネットワークを確認するために、再び信頼の docker network ls コマンドを使用します:

docker network ls

リストに新しいネットワークが表示されるはずです!

ネットワークドライバー

Dockerでは、ネットワークドライバーは異なる種類の道路です。主な種類を見てみましょう:

ドライバー 説明
Bridge デフォルトのネットワークドライバー。通信が必要なスタンドアロンのコンテナに適しています。
Host コンテナとDockerホスト間のネットワーク隔離を解除します。
Overlay 複数のDockerデーモンを接続するために使用されます。スウォームサービスに適しています。
Macvlan コンテナにMACアドレスを割り当て、ネットワーク上の物理デバイスとして表示されるようにします。
None コンテナのすべてのネットワークを無効にします。

ネットワークを作成する際にドライバーを指定することができます。例えば:

docker network create --driver overlay my_overlay_network

これは新しいオーバーレイネットワークを作成します。Docker Swarmで作業する際に非常に便利です。

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

ネットワークが整ったので、コンテナをそれに接続する方法を学びましょう。これは家(コンテナ)をどの通りに置くかを決めるようなものです。

新しいコンテナを実行する際に、どのネットワークに接続するかを指定できます:

docker run --network=my_awesome_network nginx

このコマンドはnginxコンテナを実行し、'my_awesome_network'に接続します。

既存のコンテナをネットワークに接続することもできます:

docker network connect my_awesome_network my_existing_container

コンテナをネットワークから切断する場合は:

docker network disconnect my_awesome_network my_existing_container

実際の例

これらすべてを実際の例でまとめましょう。簡単なウェブアプリケーションを構築していると仮定します。フロントエンドとバックエンドがあります。これらのコンテナがお互いに通信できるようにしたいですが、バックエンドを外部世界に公開したくはありません。

まず、ネットワークを作成します:

docker network create my_app_network

次に、バックエンドコンテナを実行し、ネットワークに接続します:

docker run --name backend --network=my_app_network -d my-backend-image

そして、フロントエンドコンテナ:

docker run --name frontend --network=my_app_network -p 80:80 -d my-frontend-image

これで、フロントエンドとバックエンドのコンテナは 'my_app_network' を通じて通信できますが、フロントエンドだけが外部世界のポート80に公開されます。

結論

そして、みなさん!Dockerネットワーキングの基本を旅しました。ネットワークのリスト表示と調査から、自分で作成し、コンテナを接続するまでです。覚えるスキルは練習で身につきます。実験を恐れず、さまざまな設定を試してみてください。

このまとめをすると、ある生徒が言ってくれたことが思い出されます。Dockerネットワーキングを学ぶことは水泳を学ぶのようなものだと言っていました - 初めは情報の洪水に押し流されそうですが、一旦理解すると、概念をスムーズに泳ぐことができます。 therefore、パドルを続け、すぐにDockerネットワークで泳ぐことができるようになるでしょう!

ハッピードックリング、そしてあなたのコンテナが常に家に帰れるようになることを祈っています!

Credits: Image by storyset