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。
参考

