PiHole is this, https://pi-hole.net/ You install it as an appliance on your local network and you configure your devices to connect to it. The documentation is generally good, but requires digging to figure out the networking requirements.
Port 80 is the Web management dashboard, therefore it should be accessible by your LAN only.
Ports 53/54 should be accessible by your LAN as well.
But if you want all these (80, 53, 54) accessible only by your host, then it gets simpler but you have to say so.
It does not appear that the PiHole needs to be accessible from the Internet, therefore there is no need for port forwarding and things like that. The PiHole will be initiating any connections to the Internet.
I assume that you want the PiHole container to be accessible by the LAN (not only the host which is simpler).
In that case, get the LXD container to get the IP address from your LAN by following a tutorial like https://blog.simos.info/how-to-make-your-lxd-containers-get-ip-addresses-from-your-lan-using-a-bridge/
You can make this a static IP through your LAN router. Your LAN router should have a management webserver (at 192.168.1.1 or 192.168.1.254) to set the IP address as static.
In fact, that’s it. If PiHole still complains, you can set manually that IP address you got from the router’s DHCP server into the container, and your container will be happy use it as a static IP address.