Chekck if you have unused docker networks.
docker network ls
Even if you don’t have many unused networks, sometimes, when you create and delete containers regurarly Docker cannot reuse IP ranges used in already deleted networks. I couldn’t find other solution then restarting the docker daemon when I had the same issue. Fortunately it didn’t happen very often.
Oh and I recommend you to check the live-restore feature. It could be useful if you have to restart the docker daemon without stopping services: Keep containers alive during daemon downtime | Docker Documentation