podman-system-migrate(1)

๐ŸŒธ podman-system-migrate(1) โ€” your girl's guide to the migration glow-up โœจ

okay so real talk, bestie: this page lives in the General Commands Manual, and its name is podman-system-migrate. Say it with me. We're moving your containers to a whole new podman era and honestly? It's giving self-care. ๐Ÿซถ


๐Ÿฆ‹ NAME

podman-system-migrate โ€” migrate existing containers to a new podman version โœจ


๐ŸŽ€ SYNOPSIS

podman system migrate [options]

๐Ÿ’… DESCRIPTION

podman system migrate migrates containers to the latest podman version. Like, that's the whole vibe. ๐Ÿ’–

It takes care of migrating your existing containers to the latest version of podman if any change is necessary. No cap โ€” if something needs to move, this is what moves it.

"Rootless Podman uses a pause process to keep the unprivileged namespaces alive. โธ๏ธ That pause process is lowkey a vibe-keeper, and it prevents any change to the /etc/subuid and /etc/subgid files from being propagated to the rootless containers while the pause process is running. Like, the changes literally cannot get through. ๐Ÿšง

For these changes to be propagated, it is necessary to first stop all running containers associated with the user and to also stop the pause process and delete its pid file. Yeah, all of that. ๐Ÿ˜ฎโ€๐Ÿ’จ Instead of doing it manually, podman system migrate can be used to stop both the running containers and the pause process. Then the /etc/subuid and /etc/subgid files can be edited or changed with usermod to recreate the user namespace with the newly configured mappings. Slay. ๐Ÿ’ซ

Not me quoting that paragraph with the quotation mark still attached โ€” that's how it is in the original, bestie, I don't make the rules. ๐Ÿ™ˆ

โœจ OPTIONS โœจ

๐Ÿ—„๏ธ --migrate-db

Migrate from the legacy BoltDB database to SQLite. ๐Ÿงš Big move.

Support for BoltDB has been removed in Podman 6.0, and existing BoltDB databases must be migrated to continue using the containers, pods, and volumes stored in them. So likeโ€ฆ you don't really have a choice, but it's for your own good. ๐Ÿ’…

This is also done automatically on system reboot. Migrating as part of a reboot is generally preferred as there is less potential for race conditions caused by other Podman processes running at the same time. ๐Ÿ”ฅ Reboot = the calm, cute, no-chaos option.

If a migration is necessary, Podman will fail to run with a descriptive error indicating this command must be used or the system must be rebooted. Very "read the room" of it. ๐Ÿ’€

To ensure complete migration, all other Podman commands should be shut down before database migration. ๐Ÿ‘‘ In particular, systemd-activated services like podman system service and Quadlets should be manually stopped prior to migration. Like, actually stop them, don't just hope.

The legacy database will not be removed, so no data loss should occur even on failure. ๐Ÿซถ Comforting, right? That's the good part.

๐Ÿƒ --new-runtime=runtime

Set a new OCI runtime for all containers. ๐ŸŒˆ

This can be used after a system upgrade which changes the default OCI runtime to move all containers to the new runtime. There are no guarantees that the containers continue to work under the new runtime, as some runtimes support differing options and configurations. ๐Ÿ˜ญ So like, it might be iconic, it might be a whole thing. Fr fr, know that going in.


๐Ÿ“ EXAMPLES

Normal invocation ๐Ÿ’–

### No output is expected from this command.
$ podman system migrate

No output. None. That's not it being broken, that's it being perfect. โญ

Migration to a new OCI runtime (e.g., from crun to runc) ๐Ÿ”ฅ

### Create a container using the current default runtime (e.g., crun)
$ podman create --name test-alpine alpine

### Confirm the current runtime
$ podman container inspect test-alpine | grep OCIRuntime
          "OCIRuntime": "crun",

### Migrate all containers to use a new runtime (e.g., runc)
$ podman system migrate --new-runtime runc

### Verify the container is now using the new runtime
$ podman container inspect test-alpine | grep OCIRuntime
          "OCIRuntime": "runc",

Look at it switching runtimes like a main character changing outfits. ๐Ÿ‘‘๐Ÿ’…


๐ŸŒธ SEE ALSO

podman(1), podman-system(1), usermod(8) โ€” go read those too, iykyk ๐Ÿ’œ


๐ŸŽ€ HISTORY

April 2019, Originally compiled by Giuseppe Scrivano (gscrivan at redhat dot com). An icon. ๐Ÿ™Œ


๐Ÿ’– okay that's the whole page!! this one's podman-system-migrate(1) from the General Commands Manual, dated April 2019 in its history. bye bestie, go migrate something responsibly ๐Ÿฆ‹โœจ๐Ÿ’œ
๐Ÿ“ฆ where this page comes from