How do you update the software in the containers when new versions come out or vulnerabilities are actively being exploited?
My understanding is that when using containers updating is an ordeal and you avoid the need my never exposing the services to the internet.
Your understanding of containers is incorrect!
Containers decouple programs from their state. The state/data live outside the container so the container itself is disposable and can be discarded and rebuild cheaply. Of course there need to be some provisions for when the state (ie schema) needs to be updated by the containerized software. But that is the same as for non-containerized services.
I'm a bit surprised this has to be explained in 2025, what field do you work in?
> How do you update the software in the containers when new versions come out or vulnerabilities are actively being exploited?
You build new image with updated/patched versions of packages and then replace your vulnerable container with a new one, created from new image
pull new container, stop old and start new. can also make immutable containers.
If you're the one building the image, rebuild with newer versions of constituent software and re-create. If you're pulling the image from a public repository (or use a dynamic tag), bump the version number you're pulling and re-create. Several automations exist for both, if you're into automatic updates.
To me, that workflow is no more arduous than what one would do with apt/rpm - rebuild package & install, or just install.
How does one do it on nix? Bump version in a config and install? Seems similar