I just setup Jellyfin on docker the other day for the first time.
It just occurred to me that I don’t know how to update docker.
Any advice?
If you set up using compose and don’t have the version pinned:
dockee compose down && docker compose pull jellyfin && docker compose up -d
What about if I am using Podman and have the container as a systemd unit file?
Podman supports auto updating natively by setting a label.
I use systemd service files for running containers, but you can add the same label on the command line or in quadlet files.
Did you use docker compose file or just run a command to start the container?
Edit: I always use compose files. For that you can do the following:
docker compose pull
docker compose down
docker compose up -d
You don’t technically need the stop, but I’ve found once or twice in the past where it was good to stop because of image dependencies that I forgot to put in my compose.
For running a command directly I found this website that seems to summarize it pretty well I think:
https://www.cherryservers.com/blog/how-to-update-docker-image
Yes, I used docker compose. Do I need to do anything to clean up with this method?
Now that you mention it, I always do a
docker system prune -f
This will clean up old images that are no longer used. I setup an alias command in Linux to do all of those commands.
I just named it docker_update and saved it in my ~/.bashrc
Checkout watchtower! Auto update your containers. Don’t forget to set WATCHTOWER_CLEANUP to true, or your disk will be filled with old images.
You could use a systemd unit file:
[Unit]
Description=docker_compose_systemd-sonarr
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
WorkingDirectory=/var/lib/sonarr
ExecStartPre=-/usr/bin/docker compose kill --remove-orphans
ExecStartPre=-/usr/bin/docker compose down --remove-orphans
ExecStartPre=-/usr/bin/docker compose rm -f -s -v
ExecStartPre=-/usr/bin/docker compose pull
ExecStart=/usr/bin/docker compose up
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
You’d place your compose file in the working dir /var/lib/sonarr
. Depending on what tag you’ve set for the image in the compose file, it would be autoupdated, or stay fixed. E.g. lscr.io/linuxserver/sonarr:latest
would get autoupdated whereas lscr.io/linuxserver/sonarr:4.0.10
would keep the container at version 4.0.10
. If you want to update from 4.0.10
, you’d have to change it in the compose file.