なぜ、Dockerネットワークが必要か?
前提として、Dockerを使ったインフラ構築では、1つのコンテナに1つのソフトウェア(ミドルウェア)を搭載する構成を取るのが一般的である。
WordPressを例にとると、次のようなコンテナ群を構築する。
- コンテナ1 Apache、Wordpress本体
- コンテナ2 MySQL
この時、コンテナ同士を接続し、コンテナ1 -> コンテナ2、逆のコンテナ2 -> コンテナ1の通信を可能とするために、Dockerネットワークが必要となる。
Dockerネットワーク操作コマンド
Dockerネットワークの一覧表示 -> docker network ls
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
1e93e3d38617 bridge bridge local
ddc254dca608 host host local
290f9a26e1e0 none null local
Dockerネットワークを作成する -> docker network create
$ docker network create wordpress1
ddd3883441974f1bd642b54048080793691a0153f728381042388c4bd0e57d5d
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
1e93e3d38617 bridge bridge local
ddc254dca608 host host local
290f9a26e1e0 none null local
ddd388344197 wordpress1 bridge local
ネットワークを指定してコンテナを起動する -> docker run -net=Xxx
docker network createで作成したネットワークに、コンテナを属させるために-netオプションを使用します。
MySQLのコンテナでは下記のようになります。
$ docker run --name mysql1 -dit --net=wordpress1 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wpdb -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=wppass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
参考文献
この本で入門しました。めちゃくちゃわかりやすいです。