【Docker】Docker ~ 基本編 / docker network ~

■ はじめに

図書館で借りたDockerの本を借りて勉強。
今回は、docker networkを学んだので、まとめる。

補足1:元ネタとなった図書館で借りた本

目次

【1】Docker Network
 1)何のために使う?
【2】Docker Network の種類
 1)bridge
 2)host
 3)none
 4)overlay
【3】ネットワークの主なコマンド
 1)docker network create
 2)docker network rm
 3)docker network ls
 4)docker network inspect
【4】複数コンテナへの適用
 使用例1:WordPress/MySQL
 使用例2:Redmine/MariaDB

【1】Docker Network

1)何のために使う?

* 例えば、WordPressの場合、以下で構成できる
~~~~~~~
 [1] WordPressコンテナ
 [2] DBコンテナ(今回の場合、「MySQLコンテナ」)
~~~~~~~

* 「[1] WordPressコンテナ」⇒「[2] DBコンテナ」へアクセスする必要があるのだが
 そのためには、仮想的なネットワークを作り、双方のコンテナを所属させることで
 コンテナ間の通信が可能になる
 => そのため、「docker network」が必要。

【2】Docker Network の種類

https://qiita.com/MetricFire/items/b731c84975bd9894748d

# ネットワーク名 概要
1 bridge コンテナ間、コンテナ外と通信できるネットワーク
2 host Dockerホストのネットワークをそのまま使う
3 none コンテナ間、コンテナ外とも通信できない
4 overlay 複数ホストがある場合に使用

1)bridge

* ソフトウェア・ブリッジを使い、
 同じブリッジ・ネットワークにあるコンテナに接続できるようにします。
* コンテナに対するネットワークの隔離も提供しますので、
 同じブリッジ・ネットワークに接続していないコンテナとは接続しません。

https://docs.docker.jp/network/bridge.html

2)host

* コンテナはホスト側のネットワーク名前空間を共有

https://docs.docker.jp/network/host.html

3)none

* 外部ネットワークインターフェイスがないが、
 ループバックインターフェイスを受信

4)overlay

* 複数ホスト(Docker Swarm/k8s etc)がある場合に使用

【3】ネットワークの主なコマンド

Command Explanation
docker network create Docker ネットワーク作成
docker network rm Docker ネットワーク削除
docker network ls Docker ネットワーク一覧表示

1)docker network create

# クライアントとデーモン API の両方が、少なくとも 1.21 が必要
docker network create hello-network
# 「33b17...」的な文字列(ネットワークID)が表示されるはず

2)docker network rm

# 作成失敗して削除したい場合
docker network rm hello-network

3)docker network ls

# 確認
docker network ls

<Output>
NETWORK ID     NAME                  DRIVER    SCOPE
33b17...   hello-network   bridge    local

4)docker network inspect

* Networkの詳細を確認

https://docs.docker.jp/engine/reference/commandline/network_inspect.html

構文

# docker network inspect <ネットワーク名>
docker network inspect bridge

【4】複数コンテナへの適用

* docker network で、仮想的なネットワークを作成したら、
 次にそれをコンテナに適用する必要がある
 => docker container run の オプション「--net」として指定する

コマンド例

# --net <Network Name>
docker container run --name hello-container --net hello-network ...

使用例1:WordPress/MySQL

* 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2022/04/29/000000

使用例2:Redmine/MariaDB

Docker ~ Redmine
https://dk521123.hatenablog.com/entry/2023/01/09/000000

関連記事

Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker ~ Linux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2018/04/10/234030
 Docker ~ 基本編 / Data Volume ~
https://dk521123.hatenablog.com/entry/2018/09/08/222100
Docker ~ GO言語 ~
https://dk521123.hatenablog.com/entry/2022/01/14/102719
Docker ~ Webサーバ ~
https://dk521123.hatenablog.com/entry/2022/02/22/000000
Docker ~ WordPress
https://dk521123.hatenablog.com/entry/2022/04/29/000000
Docker ~ Redmine
https://dk521123.hatenablog.com/entry/2023/01/09/000000