The error is telling you you already have something listening on port 80 so docker is unable to bind to 80 again until that is released. Try disabling nginx and apache as you stated.
You can run
netstat -pln
to show you what's running on what port on your host is you want to verify
For infrastructure critical services I recommend reservations on the DHCP server and then set static assignment on the device for the IP reserved in DHCP. This way if the device ever fails over to DHCP for any reason the IP will not change. I'll usually also leave some small address space outside the DHCP scope available for static assignment if needed, usually at the front and usually around 20 IPs max as it's easier to let DHCP do the heavy lifting.
Static IPs are important on infra critical devices if you ever find yourself in a situation where the DHCP services are not available, you don't want them to be a single point of failure.
Just my 2 cents.
@bless
@lemmy.world