Contents
はじめに
お試しでWordPressとMySQLのコンテナを作成したとき、--linkオプションを使ってWordPressコンテナとMySQLコンテナ間の通信を可能にしていたが、実はこれはレガシー機能らしく、
Dockerネットワークを作成してコンテナ間通信させるのが推奨とされているらしい。Dockerネットワークを作成するメリットはDNSが設定されるため、コンテナ名で名前解決ができることみたい。
今回も細かいことはすっとばして、簡単に体験してみるのが目的。
Dockerネットワークの作成
WordPressとMySQL間の通信用にDockerネットワーク「wp-network」を作成。
$ docker network create wp-network
「wp-network」が作成されたことを確認。
$ docker network ls NETWORK ID NAME DRIVER SCOPE 1e77dc96ef6c bridge bridge local 39ceb5045065 host host local a266b0b7d53a none null local 1f3468ea6fcf wp-network bridge local
1番上の「bridge」はデフォルトのDockerネットワークです。名前解決ができないため、コンテナ間通信をするときは--linkオプションを使うか、自動で割り当てられるIPアドレスを指定する必要があります。
作成成したDockerネットワークの詳細確認
$ docker network inspect wp-network [ { "Name": "wp-network", "Id": "1f3468ea6fcfe9fb5cf25bef268f5611f1dc616c8884158b2e4551365fdf8a8d", "Created": "2018-08-09T17:33:28.602968112Z", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.19.0.0/16", "Gateway": "172.19.0.1" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": {}, "Options": {}, "Labels": {} } ]
Dockerネットワークを指定してコンテナ起動
今回は下の「Dockerネットワークを使ったコンテナの作成」でコンテナ起動します。
-linkオプションををつかったコンテナ作成
$ docker run --name dev-mysql57 -e MYSQL_ROOT_PASSWORD=<パスワード> -d mysql:5.7 $ docker run --name dev-wordpress --link dev-mysql57:mysql -p 8080:80 -d wordpress
Dockerネットワークを使ったコンテナの作成
※MySQLのコンテナ名はWordPressが「mysql」で接続するようなので「mysql」で指定。
$ docker run --name mysql --network wp-network -e MYSQL_ROOT_PASSWORD=<パスワード> -d mysql:5.7 $ docker run --name dev-wordpress --network wp-network -e WORDPRESS_DB_PASSWORD=<パスワード> -p 8080:80 -d wordpress
作成したコンテナの確認。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2d90feabd633 wordpress "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp dev-wordpress 00c18f92e45c mysql:5.7 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 3306/tcp mysql
http://127.0.0.1:8080 でWordPressの画面が表示されればOK。
参考