コンテナ起動時に、利用できるIPアドレスが無かったり、サブネットが無い場合以下のようなエラーが出ます。
Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
初期設定では30個ほどネットワークを作成するとこのエラーが出るようになっています。 解決方法として不要なネットワークを削除してスペースを開けるのがありますが、これだとまたエラーになった時に同じことをする必要が出てきて面倒です。
daemon.jsonを書き換え、Dockerの設定を変えることで、利用するネットワークの範囲を設定する方法がおすすめです。
[解決方法] daemon.jsonに設定を記載する
/etc/docker/daemon.jsonに以下の記述を行ったファイルを配置します。
以下の設定では、networkを作成する際に、172.16.1.0/16 ~ 172.16.255.0/16という風にサブネットが分けられます。172.16.255.0まで到達すると次は172.17.0.0から割当が始まるようになっています。
サブネット内のIPアドレスはsizeが24ですので、172.16.1.1 ~ 172.16.1.255の範囲でサブネットに対応して割当が行われます。
{ "default-address-pools": [ {"base":"172.16.0.0/16", "size":24}, {"base":"172.17.0.0/16", "size":24}, {"base":"172.18.0.0/16", "size":24}, {"base":"172.19.0.0/16", "size":24}, {"base":"172.20.0.0/16", "size":24}, {"base":"172.21.0.0/16", "size":24}, {"base":"172.22.0.0/16", "size":24} ] }
注意点
IPの設定する前に、端末が上記のIPをすでに利用していないか確認する必要があります。
確認はipコマンドやifconfig等で行えます
ip a ifconfig
仮に利用している場合、設定をした途端に特定のソフトや端末がネットワークに接続できなくなるという問題が発生する可能性があります。