Upgrading Pi-hole is easy:

pihole -up

However, this doesn’t work if you’re running a Docker container.

To get Pi-hole Docker container upgraded, you have to force Docker to pull the latest Pi-hole version and redeploy the container.

docker pull pihole/pihole
Using default tag: latest
latest: Pulling from pihole/pihole
72a69066d2fe: Already exists
9581888e86b4: Pull complete
58952488aee3: Pull complete
aef6f138b30a: Pull complete
f1d70d0cecf6: Pull complete
e28b98bbbcaf: Pull complete
da2dbe10d69d: Pull complete
bbac4f90345b: Pull complete
Digest: sha256:a02faea91d505d0bfc1583049f3e943f2c3afe03df574e625ffa828b16b85832
Status: Downloaded newer image for pihole/pihole:latest

It is especially important to pull the latest version BEFORE you destroy the existing Pi-hole instance if you have a single Pi-hole instance, as you won’t be able to resolve any hostnames.

Stop and destroy the existing Pi-hole container:

docker stop pihole
docker rm -f pihole

Using our existing pihole.yaml file, we spin up another Docker container for Pi-hole:

docker-compose -f ./pihole.yaml up -d

Then verify we’re running the latest version of Pi-hole:

docker exec -it pihole pihole -v
  Pi-hole version is v5.8.1 (Latest: v5.8.1)
  AdminLTE version is v5.10.1 (Latest: v5.10.1)
  FTL version is v5.13 (Latest: v5.13)