- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-12-20T11:11:44+00:00","","")
#author("2019-12-20T12:56:58+00:00","","")
#mynavi(dockerメモ)
#setlinebreak(on);
* 概要 [#fbcf9482]
* 目次 [#ue9f4bb8]
#contents
- 関連
-- [[dockerメモ]]
-- [[dockerでサクッとNginx環境構築]]
-- [[Nginx+uwsgi+Flaskをdockerで動かす]]
-- [[LAMP環境のdockerイメージを作る]]
* Dockerネットワークによる通信 [#a903cfc0]
#html(<div class="pl10">)
dockerネットワークを作成
#myterm2(){{
docker network create my-docker-network
}}
作成した dockerネットワークを確認
#myterm2(){{
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つのコンテナを用意して双方から通信してみる。
** コンテナの作成 [#v728d265]
#html(<div class="pl10">)
作業用ディレクトリの作成
#myterm2(){{
mkdir -p container_a/www
mkdir -p container_b/www
}}
container_a/Dockerfile 及び container_b/Dockerfile (内容は同じ)
#mycode2(){{
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
#mycode2(){{
<!doctype html>
<html>
<h1>Container A!</h1>
</html>
}}
container_b/www/index.html
#mycode2(){{
<!doctype html>
<html>
<h1>Container B!</h1>
</html>
}}
#html(</div>)
** コンテナのビルド/起動 [#g3eccecf]
#html(<div class="pl10">)
以下、ビルドイメージ名は a と b で変えているが、Dockerfile の内容は同じなので別にイメージ名変える必要はない。
コンテナAのビルド 及び起動
#myterm2(){{
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のビルド 及び起動
#myterm2(){{
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
}}
#html(</div>)
** コンテナに入って通信確認 [#o6fac846]
#html(<div class="pl10">)
コンテナAに入る。
#myterm2(){{
docker exec -it container-a /bin/bash
}}
自身(コンテナA)にリクエストを飛ばしてみる。
#myterm2(){{
curl http://localhost
<!doctype html>
<html>
<h1>Container A!</h1>
</html>
}}
自身(コンテナA)にコンテナ名でリクエストを飛ばしてみる。
#myterm2(){{
curl http://container-a
<!doctype html>
<html>
<h1>Container A!</h1>
</html>
}}
コンテナBにリクエストを飛ばしてみる。
#myterm2(){{
curl http://container-b
<!doctype html>
<html>
<h1>Container B!</h1>
</html>
}}
#html(</div>)
#html(</div>)
* docker-composeで行う場合 [#k9f5c099]
#html(<div class="pl10">)
#html(</div>)