Help With PiHole, using docker-compose always "reserve" 67 udp port. And is not declared on yml file

Hi all!!!!

Im triyin to install pihole with Docker-Compose. All works , but always reserve the 67 udp port.

My docker-compose.yml

pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "82:80/tcp"
    environment:
      - TZ=Europe/Madrid
      - WEBPASSWORD=mypass1234
    volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
    restart: unless-stopped

When is UP, i launch this PS command ,and get 67 udp port is on the ports the container are using ¿?¿?

The problem is, i cant´use the 67 udp port if pi-hole is up :frowning:

$ docker-compose ps
 Name    Command       State                                                          Ports
-----------------------------------------------------------------------------------------------------------------------------------------------
pihole   /s6-init   Up (healthy)   0.0.0.0:53->53/tcp,:::53->53/tcp, 0.0.0.0:53->53/udp,:::53->53/udp, 67/udp, 0.0.0.0:82->80/tcp,:::82->80/tcp

Of course the DHCP server on PI-HOLE is NOT enabled.

Thanks for help me!

Kindest Regards.

Run on your Docker host machine, what's the result of

sudo ss -tulpn sport = 67

Thanks!
I will do it, when i have more time. Yesterday i need my dhcp online. I will check it asap.

The only thing i can see:
Docker Pi Hole down.
i can install on the host a ISC-DHCP-Server and start it. Because the ports are free.

Uninstall dhcp server.

Docker Pi Hole UP.
I can´t install on the host ISC-DHCP-Server, the dhcp install, but cant start the service because the port 67 are in use.

My workaround... uninstall the ISC-DHCP-Server, and use the docker-compose of pihole removin¡g all the ports and change network mode to host. Perhaps macvlan do the work too. And use the DHCP of pihole instead ISC-DHCP-Server

network_mode: host

Thanks

I doubt that Pi-hole's container iscausing your port 67/udp issue, as your output shows the expected results.

Note that docker ps lists the ports as exposed (i.e. ports a container can listen on) and published (i.e. ports bound by Docker and mapped to a container).

(...) 67/udp, 0.0.0.0:82->80/tcp (...)

You could also explicitly filter for published and exposed ports, e.g.

docker ps --filter expose=80/tcp
docker ps --filter publish=82/tcp

You can also list the ports that Docker has published for a container via:

docker port <container>

Your docker ps output already shows that your Pi-hole would expose port 67/upd, but it isn't published, i.e. Docker didn't add any bindings to it - it is free to be used by any process.

While the docker commands would just show ports as claimed by Docker, running the socket statistics command I've provided above would list all processes that bind port 67 on your machine, revealing whether there is indeed a conflict over port 67 on your system.