services: adguardhome: image: adguard/adguardhome security_opt: - apparmor:unconfined container_name: adguardhome ports: - 53:53/tcp - 53:53/udp - 784:784/udp - 853:853/tcp - 3000:3000/tcp - 80:80/tcp - 443:443/tcp volumes: - /docker/appdata/adguard/workdir:/opt/adguardhome/work - /docker/appdata/adguard/confdir:/opt/adguardhome/conf restart: unless-stopped # 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