目次

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外部ネットワークへの接続を禁止します
--ipv6IPv6 を有効にします
--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 で切断します。

関連する章

練習問題

練習:--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日