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