Because podman does not have a daemon (background service), there is nothing to start our containers when the system boots.
Luckily Podman has excellent integration with systemd which is known for managing background services on linux including starting them when the system starts.
Here are the steps we'll take to ensure our containers start with the system:
podman generate systemd
to generate systemd service filesNOTE: This command has been deprecated in favor of Quadlets, however the podman team won't remove the command, they will continue to fix bugs but not add any new features.
As mentioned earlier to generate the systemd files, we'll use podman generate systemd.
Let's see it in action:
# command synopsis
podman generate systemd <container name | id>
# example:
podman generate systemd my-pgsql > my-pgsql.service
In the example we have generated a systemd service file for our my-pgsql
example container and piped the output into a file my-pgsql.service
that we
can easily reference later on.
Here is an example using my website container:
Our next step after generating the container service files is to move it to your user's systemd folder, this will allow us to enable and start our container as a service (CaaS), lol if you get the reference.
The folder can be found on this path ~/.config/systemd/user
, this is for your user with rootless containers.
We can use the linux mv
command to move the file like this:
mv <file-name> ~/.config/systemd/user/
# from example earlier:
mv jaze-dev.service ~/.config/systemd/user/
Now that we've moved the service file into our user's systemd folder. All that is left to do is simply enable and start the service:
# enable the service
systemctl --user enable my-container.service
# start the service
systemctl --user start my-container.service
Once that is done, we can simply test by either rebooting with the linux reboot
command or restarting the service.
We've learned how to use podman generate systemd
to allow our containers to start at startup, although it is deprecated the
team is not going to remove the command and they will still fix bugs with it as well.
Here is a recap of the steps we took:
podman generate systemd <container>
to generate a service file~/.config/systemd/user/
systemctl --user enable/start
I'll soon be covering quadlets, which is an upgrade for containers that integrate with systemd.
Thanks for reading and I hope this helped you on your podman journey!!