この記事は、Zennにも投稿しています。
自宅サーバーで
docker-compose up
をしたときというエラーが出ました。どうやらデフォルトの設定ではIPアドレスが使い果たされてしまうため30個以上のネットワークをDockerで作ることができないみたいです。
ググったところ
ググったところ
docker network prune
などの解決策が出てきましたが実際に30個のネットワークを使っているのでこれでは意味がありません。根本から解決するには、1ネットワークあたりのIPアドレスを少なくするように変更する必要があります。
これはネットワークにアドレスを設定することで可能です。例えば以下の記事ではそのようにやっています。
新たなコンテナアプリを起動したところネットワーク関連エラーで起動できない
zenn.dev
ですが今後のために今回はdockerの設定を変更することにしました。Dockerの
default-address-pools
という設定を変更することでdocker compose up
で作られるネットワークのデフォルト設定をすることができます。デフォルトではdockerの
default-address-pools
は以下のようになっています(実際にこういう設定が記述されているわけではありませんが概念としてはこうなります)。これは1ネットワークあたり最大で
/16
という巨大領域を割り当てています。1コンテナに対してこれは明らかに過剰なので減らしてしまいましょう。にして1ネットワークあたりのホスト数を少なくしてやればより多くのネットワークを作れるというわけです。
以下の記事に非常に詳しく説明されていて分かりやすいです。
The definitive guide to docker's default-address-pools option
What the default pools are, why you can't make more than 31 bridge networks, & how to fix that.
straz.to
SynologyのContainer Managerでの設定方法
SynologyのContainer Managerを使っている人だけに関係がある話です。
通常であれば以上の設定を
/etc/docker/daemon.json
に加えればいいのですが、Synology NAS上のdockerではに設定しなければなりません。
また、ここはContainer Managerの更新で上書きされる可能性があるため注意する必要があります。