Docker #25 Docker コンテナ間通信
コンテナについて、以下サイトを参考に学習する。
Docker入門(第五回)〜コンテナ間通信〜 | さくらのナレッジ
環境
Windows 10 1909 (18363.959)
Docker Toolbox : Docker version 19.03.1
コンテナ CentOS:8.2.2004
Apache 2.4.37
PHP 7.2.24
準備
前回起動したコンテナを削除しておく。
docker stop my-php1 docker stop my-mariadb1 docker rm my-php1 docker rm my-mariadb1"
概要
コンテナ間はbridgeネットワークで接続され、それぞれにIPが割り当てられ通信できることが分かった。
しかし既定のbridgeネットワークにはDNS機能が無く、名前解決による通信ができない。
名前解決で通信を行う場合は、新規にDockerネットワークを作成すれば良さそうなので実際に検証してみる。
Dockerネットワーク作成
1) "docker network create ネットワーク名" で作成。
今回は、ネットワーク名 "test" で作成する。
2) "docker network ls" で確認。$ docker network create test 26f91a1309d12180b9886cdc8b9e605caee8701ba7e9c7e4e7d60912ba215ddd
$ docker network ls NETWORK ID NAME DRIVER SCOPE 71a3a76fceec bridge bridge local 126de15f15d2 host host local 4c6b80365629 none null local 26f91a1309d1 test bridge local→ "test" が作成された。
3) ネットワークを指定してコンテナを起動するには "--network ネットワーク名" パラメータを使用する。
MariaDBとApache+PHPコンテナをtestネットワークで起動する。
4) testネットワークの詳細を確認docker run -it -d --rm -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=docker \ -e MYSQL_USER=docker -e MYSQL_PASSWORD=docker \ --network test \ --name my-mariadb1 mariadb:latest
docker run -it -d -p 80:80 \ -v //c/Users/user/php/public-html/:/var/www/html/ \ --network test \ --name my-php1 my-php
"docker network inspect test"
:省略 "Containers": { "23d48f934dc10202c3ae83a4c318e60f456355d96836d1c1f8ed8f85c19fa778": { "Name": "my-php1", "EndpointID": "122775a7ef668e1ee7d1162c631c2110b48e0ecfd379f51ff32d46f07ec7d379", "MacAddress": "02:42:ac:12:00:03", "IPv4Address": "172.18.0.3/16", "IPv6Address": "" }, "c1f5f15d23f63ee5f579ece4e048bb9ac0aac1491a9835778af3c8f2dd419648": { "Name": "my-mariadb1", "EndpointID": "67689d805a52a9f88c519f7a96722c1efbdaa769559a5530608dd9ac95df5f89", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" } }, :省略→ my-mariadb1とmy-php1が接続していることが確認できる。
5) my-php1コンテナのbashに接続し、my-mariadb1 の名前で通信できるか確認。
[root@23d48f934dc1 /]# ping my-mariadb1 PING my-mariadb1 (172.18.0.2) 56(84) bytes of data. 64 bytes from my-mariadb1.test (172.18.0.2): icmp_seq=1 ttl=64 time=0.076 ms 64 bytes from my-mariadb1.test (172.18.0.2): icmp_seq=2 ttl=64 time=0.089 ms 64 bytes from my-mariadb1.test (172.18.0.2): icmp_seq=3 ttl=64 time=0.118 ms→ 通信できた。
続く・・・
Docker学習
0 件のコメント:
コメントを投稿