■ Docker学習 #26:Docker コンテナ間通信 (2)

前回からの続き…
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" で作成する。
$ docker network create test
26f91a1309d12180b9886cdc8b9e605caee8701ba7e9c7e4e7d60912ba215ddd
2) "docker network ls" で確認。
$ 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ネットワークで起動する。
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
4) testネットワークの詳細を確認
"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 件のコメント:

その他の記事