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>