Port 53 is being used at your host machine, that's why you can not bind 53 to host.
To find what is using port 53 you can do: sudo lsof -i -P -n | grep LISTEN
I'm a 99.9% sure that systemd-resolved is what is listening to port 53. To solve that you need to disable it. You can do that with these 2 commands:
- systemctl disable systemd-resolved.service
- systemctl stop systemd-resolved
Now you have port 53 open, but no dns configured for your host. To fix that, you need to edit '/etc/resolv.conf' and add the dns address. This is an example with a common dns address:
nameserver 8.8.8.8
If you have another nameserver in that file, I would comment it to prevent issues.
Once pihole docker container gets running, you can change the dns server of your host to localhost, as you are binding port 53 to the host machine. Change again '/etc/resolv.conf' like this
nameserver 127.0.0.1
Hope this helped! ( I recommend you to learn docker-compose, it is easier to use than 'docker run' IMO)