目次
Docker network コマンド入門:ネットワークの作成、コンテナの接続、エイリアス
docker network は Docker ネットワークを管理するコマンドです。ネットワークの概念や、デフォルトネットワークとカスタムネットワークの違いについては、ネットワークとコンテナ間通信を参照してください。
サブコマンド
| コマンド | 説明 |
|---|---|
docker network ls | ネットワークを一覧表示します |
docker network create 名前 | ネットワークを作成します |
docker network inspect 名前 | 接続中のコンテナや IP を含む詳細情報を表示します |
docker network connect ネットワーク コンテナ | 実行中のコンテナをネットワークに接続します |
docker network disconnect ネットワーク コンテナ | コンテナをネットワークから切断します |
docker network rm 名前... | ネットワークを削除します(コンテナが接続中の場合は削除できません) |
docker network prune | コンテナから使われていないカスタムネットワークをすべて削除します |
docker network create でよく使うオプション:
| オプション | 説明 |
|---|---|
-d, --driver | ドライバー。デフォルトは bridge です |
--subnet | サブネット。例:172.30.0.0/24 |
--gateway | ゲートウェイ IP |
--ip-range | サブネット内の特定の範囲からのみ IP を割り当てます |
--internal | 外部ネットワークへの接続を禁止します |
--ipv6 | IPv6 を有効にします |
--label | ラベルを追加します |
docker network connect でよく使うオプション:--alias エイリアス、--ip 固定IP。
例
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
58a492b7c501 bridge bridge local
720ed2121dc4 host host local
07184d7358b0 none null local
$ docker network create appnet
c94640ca44aae05529e21bfe93c1fd957f70ca0d4bcc40209e91aa434dbc65e4
$ docker network create --subnet 172.30.0.0/24 fixednet
320f2c205537c3957304a23459143038a39e3b3a9323edc3bb5cec13688a1cf5
$ docker run -d --name api --network appnet --network-alias backend nginx:1.30-alpine
a40d4c075b88d806529bc6b58f9e1a90f6bc918eed0af6a852e3e8983f3e8e7a
$ docker run --rm --network appnet alpine:3.23 sh -c "ping -c1 -W1 api >/dev/null && echo api ok; ping -c1 -W1 backend >/dev/null && echo backend ok"
api ok
backend ok
$ docker network inspect -f "{{range .Containers}}{{.Name}} {{.IPv4Address}}{{end}}" appnet
api 172.19.0.2/16
- デフォルトでは3つのネットワークがあります。
bridge(デフォルト)、host(ホストのネットワークを直接使用)、none(ネットワークなし)です。 appnetと、サブネットを指定したfixednetを作成します。apiコンテナをappnetに接続し、--network-aliasでbackendという別名を追加します。同じネットワーク上のほかのコンテナは、apiまたはbackendのどちらでも接続できます。
$ docker network connect fixednet api
$ docker inspect -f "{{range \$k, \$v := .NetworkSettings.Networks}}{{\$k}}={{\$v.IPAddress}} {{end}}" api
appnet=172.19.0.2 fixednet=172.30.0.2
$ docker network disconnect fixednet api
$ docker network rm appnet
Error response from daemon: error while removing network: network appnet has active endpoints (name:"api" id:"df7a1c38176a")
exit status 1
$ docker rm -f api
api
$ docker network rm appnet fixednet
appnet
fixednet
network connectを使うと、実行中のapiもfixednetに接続できます。これで2つのネットワークインターフェースと2つの IP を持ちます。appnetでは172.19.0.2、fixednetでは指定サブネット内の172.30.0.2です。リバースプロキシがフロントエンドネットワークとバックエンドネットワークの両方に接続する例のように、コンテナを2つのサービス群と同時に通信させる方法です。- コンテナが接続中のネットワークを削除しようとすると、
network appnet has active endpointsというエラーになります。ネットワークを削除するには、先にコンテナを削除するか、disconnectで切断します。
関連する章
- ネットワークとコンテナ間通信
- Nginx とリバースプロキシ
- compose.yaml の構文:Compose の
networks
練習問題
練習:--internal を付けた private ネットワークを作成し、コンテナを起動してそこに接続します。コンテナが外部に接続できないこと(例:ping -c1 1.1.1.1)を確認してください。
解答
docker network create --internal private
docker run --rm --network private alpine:3.23 ping -c1 -W2 1.1.1.1
実行結果は ping: sendto: Network unreachable です。コンテナから外部への経路がないことを示しています。練習が終わったら docker network rm private を実行します。
よくある質問
デフォルトネットワークでコンテナ名を使って接続できないのはなぜですか?
デフォルトの bridge ネットワークでは名前解決ができません。カスタムネットワーク(docker network create)と Compose が作成するネットワークでは、コンテナ名やサービス名から IP が自動的に解決されます。
--network-alias は何に使いますか?
ネットワーク上でコンテナに別名を追加できます。たとえば、コンテナ名を api-v2 にしながら、ほかのサービスからは backend で接続できます。また、複数のコンテナに同じエイリアスを設定して、リクエストを簡単に分散できます。
--internal ネットワークとは何ですか?
--internal を付けたネットワークではコンテナ同士は通信できますが、外部ネットワークには接続できません。データベースなど、インターネット接続が不要なサービスに適しています。
更新日 2026年10月14日