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:
著書
articleKubernetes で Pod が CrashLoopBackOff の原因と切り分け手順
articleRedis Docker Compose 構築:永続化・監視・TLS まで 1 ファイルで
articleDocker イメージ署名と検証:cosign でサプライチェーンを防衛する運用手順
articleDocker で DNS 解決に失敗する時の原因と対処:overlay2・systemd-resolved・WSL2 対応
articleDocker コマンド早見表:build/run/exec/logs/prune を 1 枚で網羅
articleDocker vs Podman vs nerdctl 徹底比較:CLI 互換性・rootless・企業導入の勘所
articleClaude Code と Codex を並列で動かしたときの動き: 同じファイルでも書き換えは消えない
articleClaude Code の Stop フックで、終わる前にテストを走らせる手順: 失敗が残ったまま終わらない
articleClaude Code と Codex のスキルの置き場所の動き: .claude/skills と .agents/skills は互いに読まない
articleClaude Code の /security-review で変更を点検する手順: origin/HEAD がないと止まる
articleClaude Code と Codex のスキルを入れる前に中身を確かめる手順: security-audit で見る5か所
articleCloudflare の security-audit スキルを Claude Code と Codex で比較: 3つとも見つけ、進め方に差
