docker-composeのコンテナへIPアドレスを設定して起動した際に発生するnetworks with user configured subnetsエラーの対応

docker-composeのコンテナへIPアドレスを設定して起動した際に発生するnetworks with user configured subnetsエラーの対応についてメモしました。
経緯
dockerでアプリを作成していてWebとDBのサーバーを切り離して利用できるようにしたかったため
docker-composeを分けて作成しました。
その際に別々のdocker-composeでもコンテナ同士の通信ができるように同一のnetworkに含めるようにしています。
ただ別々でコンテナを立ち上げると立ち上げた際にIPが自動的に割り振られることで再起動すると通信ができなくなってしまうことがあったため
IPを固定で起動できるように設定しました。
yaml// docker-compose.yaml
version: '3.5'
services:
db:
// 中略
networks:
sample_network:
ipv4_address: 172.18.0.10
networks:
sample_network:
sample_network
は下記コマンドで作成しました。
zsh$ docker network create -d bridge sample_network
環境
- Docker 20.10.2
- docker-compose 1.25.0
発生したエラー
docker-compose up
コマンドで起動すると下記のエラーとなります。
zsh$ docker-compose up -d
Starting db ... error
ERROR: for db user specified IP address is supported only when connecting to networks with user configured subnets
IPを指定する場合はユーザーが構成したsubnetを持つ場合にのみサポートされますという内容です。
ネットワークを確認
ネットワークを確認するとsubnetは172.18.0.0/16
へ割り当てられています。
コンテナへ指定した172.18.0.10
もともとネットワークを作成した際に割り当てられた172.18.0.0/16
の範囲で指定していたのですがなぜかエラーになってしまいます。
zsh$ docker network inspect sample_network
[
{
"Name": "sample_network",
"Id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Created": "2021-06-21T22:40:08.169449156+09:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
subnetを指定してネットワークを作成し解決
subnetを指定して改めてネットワークを作成したら解決しました。
一度ネットワークを削除
docker network rm
コマンドで削除します。
zsh$ docker network rm sample_network
subnetを指定してネットワークを再作成
subnetを指定してネットワークを再作成します。
zsh$ docker network create --subnet=172.18.0.0/16 sample_network
再度コンテナを起動
再度コンテナを起動したら無事起動しました。
zsh$ docker-compose up -d
Creating db ... done
dbコンテナへのアクセス
dbコンテナへのアクセスについても同一のsample_network
へ所属している別のコンテナから
172.18.0.10
でアクセスすると無事アクセスすることができました。
yaml// docker-compose.yaml
version: '3.5'
services:
web:
// 中略
networks:
sample_network:
- article
Windows WSL2 に Docker を最適導入:I/O 最適化・メモリ配分・互換性チェック
- article
Docker vs Podman vs nerdctl 徹底比較:CLI 互換性・rootless・企業導入の勘所
- article
WordPress を Docker で最速構築:開発/本番の環境差分をなくす手順
- article
Docker の全体像を俯瞰:コンテナ時代の開発・配布・運用を一本化する戦略ガイド
- article
Docker Swarm 徹底入門:Kubernetes に移行する前に理解すべきこと
- article
Playwright × Docker:本番環境に近い E2E テストを構築
- article
【2025 年 10 月版】 Claude Sonnet 4.5 登場! Claude Pro でも使える!Claude Code のアップデート手順まで紹介
- article
Turborepo で Zustand スライスをパッケージ化:Monorepo 運用の初期設定
- article
Nuxt を macOS + yarn で最短構築:ESLint/Prettier/TS 設定まで一気通貫
- article
キャッシュ比較:WordPress で WP Rocket/LiteSpeed/W3TC を検証
- article
Nginx を macOS で本番級に構築:launchd/ログローテーション/権限・署名のベストプラクティス
- article
WebSocket を NGINX/HAProxy で終端する設定例:アップグレードヘッダーとタイムアウト完全ガイド
- blog
iPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
- blog
Googleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
- blog
【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
- blog
Googleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
- blog
Pixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
- blog
フロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来