概要

目次

Dockerネットワークによる通信

dockerネットワークを作成

docker network create my-docker-network

作成した dockerネットワークを確認

docker network inspect my-docker-network
[
    {
        "Name": "my-docker-network",
        "Id": "ef9813e65909c9b9cdf3bdba399b791a9c3be9240b591fc3d84c6fcf2cc28d73",
        "Created": "XXXX-XX-XXTXX:XX:XX.XXXXXXZ",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.22.0.0/16",
                    "Gateway": "172.22.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

試しに2つのコンテナを用意して双方から通信してみる。

コンテナの作成

作業用ディレクトリの作成

mkdir -p container_a/www
mkdir -p container_b/www

container_a/Dockerfile 及び container_b/Dockerfile (内容は同じ)

FROM nginx:latest

# 通信確認用にcurlを入れておく
RUN apt-get -y update
RUN apt-get -y install curl

CMD nginx -g "daemon off;"

container_a/www/index.html

<!doctype html>
<html>
<h1>Container A!</h1>
</html>

container_b/www/index.html

<!doctype html>
<html>
<h1>Container B!</h1>
</html>

コンテナのビルド/起動

以下、ビルドイメージ名は a と b で変えているが、Dockerfile の内容は同じなので別にイメージ名変える必要はない。

コンテナAのビルド 及び起動

docker build -t nginx-a ./container_a
docker run --rm --name container-a -v `pwd`/container_a/www:/usr/share/nginx/html --network my-docker-network -d nginx-a

コンテナBのビルド 及び起動

docker build -t nginx-b ./container_b
docker run --rm --name container-b -v `pwd`/container_b/www:/usr/share/nginx/html --network my-docker-network -d nginx-b

コンテナに入って通信確認

コンテナAに入る。

docker exec -it container-a /bin/bash

自身(コンテナA)にリクエストを飛ばしてみる。

curl http://localhost

<!doctype html>
<html>
<h1>Container A!</h1>
</html>

自身(コンテナA)にコンテナ名でリクエストを飛ばしてみる。

curl http://container-a

<!doctype html>
<html>
<h1>Container A!</h1>
</html>

コンテナBにリクエストを飛ばしてみる。

curl http://container-b

<!doctype html>
<html>
<h1>Container B!</h1>
</html>

docker-composeで行う場合


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS