podman-system-migrate(1)

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.

podman system migrate takes care of migrating existing containers to the latest version of podman if any change is necessary.

"Rootless Podman uses a pause process to keep the unprivileged namespaces alive. This prevents any change to the /etc/subuid and /etc/subgid files from being propagated to the rootless containers while the pause process is running.

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. Instead of doing it manually, podman system migrate can be used to stop both the running containers and the pause process. The /etc/subuid and /etc/subgid files can then be edited or changed with usermod to recreate the user namespace with the newly configured mappings.

OPTIONS

  --migrate-db
Migrate from the legacy BoltDB database to SQLite. Support for BoltDB will be removed in Podman 6.0. Podman will display a warning if this migration is necessary. To ensure complete migration, all other Podman commands must be shut down before database migration. In particular, systemd-activated services like podman system service and Quadlets should be manually stopped prior to migration. If you are unsure please reboot instead and run any podman command afterwards which will trigger the migration automatically as we can ensure there that no other parallel commands can interfere with the database. The legacy database will not be removed, just renamed, so no permanent data loss should occur even on failure.

  --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.

EXAMPLES
Normal invocation

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

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",

SEE ALSO
podman(1), podman-system(1), usermod(8)

HISTORY
April 2019, Originally compiled by Giuseppe Scrivano (gscrivan at redhat dot com)