最終更新日: 2026-08-02
TOP(About this memo)) > 一覧(Docker) > ネットワーク
docker network ls コマンドで確認できる。NETWORK ID NAME DRIVER
10aa51e2d993 bridge bridge
202b87d7b8a4 none null
92316fc5522f host host
docker run -itd --net host --name hostnginx nginx:alpine
-p オプションの指定が必須だが、hostネットワークを使う場合は、コンテナとして実行しているnginxがリッスンしているポート80が、特に何の制限もなくホスト外からも通信できる。--net オプションを特に指定しない場合、自動的にこれが選択される。
docker run コマンドを実行すると、通常は「bridge0」という名前のブリッジ・ネットワークに接続する。
gethというノードに対して http://geth:8545 のような形でアクセスできる。
myapp というフォルダにあるdocker-compose.ymlで up すると「myapp_default」というネットワークが生成される。それぞれのコンテナが myapp_default に参加する。external: true
name で指定した既存のネットワークに接続する。internal: true
false)。
docker network inspect ネットワーク名
docker network create mybridge
docker run -itd --net mybridge --name alpine3 alpine /bin/sh
docker network inspect mybridge
ping 172.19.0.2 や ping db で疎通を確認し、他のブリッジネットワークには接続できないことを確認する。docker stop コンテナIDdocker container prune5432:5432 としてポートをpublishしているPostgresのコンテナに対して、--network host で立ち上げた別のコンテナからアクセスすることはできた。--network host として立ち上げたサーバーに対して、ホストマシンからアクセスすることはできなかった(IME)。
localhost:80 でアクセスできない。docker run --rm --network host --name my_nginx nginx
http://host.docker.internal:8080/〜docker container run -p 8080:80 nginx の場合、0.0.0.0:8080 -> 0.0.0.0:80 という形でバインドされる(IMO)。docker container run -p 127.0.0.1:8080:8080:80 nginx のようにすると、自分のマシンからのみアクセスできる。docker container port コンテナ名 で確認すると 8080/tcp -> 0.0.0.0:8080 としか表示されない。ちゃんと 0.0.0.0:8080/tcp -> 0.0.0.0:8080 のように出してくれたほうが親切だと思うのだが(IMO)。lsof -i -P で確認するとバインド状況が分かる。com.docke 2349 <ユーザー名> 163u IPv6 0x8c33e5bd6b030031 0t0 TCP *:8080 (LISTEN)
127.0.0.1 ではなく 0.0.0.0 にする必要がある。