spiegel_podman/docs/source/markdown
Matt Heon d420fbfde3 Add migration code for BoltDB to SQLite
This is gated behind a new option in `podman system migrate`,
`--migrate-db`, or by a system restart being performed.

BoltDB support was removed in Podman 6, so we are certain that,
when we start Podman, a SQLite state is in use. However, if we
also detect a valid BoltDB state, we will attempt a migration.

Migration is performed by retrieving all volumes, pods, and
containers (in that order, to ensure there are no dependency
conflicts) from the Bolt database, when adding them to the SQLite
database. If there is a conflict - IE, a container exists in both
SQLite and Bolt - we skip migration for that object. The old DB
is then renamed so we do not try to migrate it again.

Our ability to test complex migration scenarios is limited, but
this should handle simple migrations easily.

This is a heavily adapted version of #27660 rebuilt to work with
Podman 6.0. Substantial changes were required to throw errors
when a BoltDB database is detected and no migration is being
performed. Firstly, for automatic on-reboot migrations, we need
to have a deferred error returned by getDBState (very early in
runtime initialization) that is only acted on much later (once we
know for certain a state refresh is/is not being performed).
The `system migrate --migrate-db` command was much more
problematic. Conceptually, it's not terrible - add a flag to the
runtime to suppress errors, set that flag only when calling the
`system migrate` command with `--migrate-db` - but it unveiled a
serious problem with how we do runtime init (special flags to the
runtime were being ignored because the image runtime set the
Libpod runtime first and had none of the proper handling) which
took a genuinely annoying amount of time to identify and fix.

This cannot be tested automatically, as the ability to create Bolt
databases has been entirely removed with Podman 6.

This also includes 9b810aed3a from
the v5.8 branch by Luap99, which I have had to squash into this
commit to satisfy the build-each-commit check. It was just a
simplification of the SQLite path check.

Signed-off-by: Matt Heon <matthew.heon@pm.me>
2026-05-08 14:07:17 -04:00
..
links Revert "Rewrite the Quadlet documentation." 2025-09-11 19:00:19 +02:00
options Rewrite the Quadlet documentation 2026-05-04 10:53:36 +02:00
.gitignore Rewrite the Quadlet documentation 2026-05-04 10:53:36 +02:00
podman-artifact-add.1.md.in feat: remove reference to --help from artifact man pages. Resolves: #28373 2026-03-26 11:23:45 +01:00
podman-artifact-extract.1.md feat: remove reference to --help from artifact man pages. Resolves: #28373 2026-03-26 11:23:45 +01:00
podman-artifact-inspect.1.md feat: remove reference to --help from artifact man pages. Resolves: #28373 2026-03-26 11:23:45 +01:00
podman-artifact-ls.1.md.in feat: add list as ls alias for artifact command. Resolved ##28372 2026-03-27 08:08:19 +01:00
podman-artifact-pull.1.md.in #28374 de-duplicated --quiet option from docs 2026-03-28 09:50:41 +00:00
podman-artifact-push.1.md.in #28374 de-duplicated --quiet option from docs 2026-03-28 09:50:41 +00:00
podman-artifact-rm.1.md feat: remove reference to --help from artifact man pages. Resolves: #28373 2026-03-26 11:23:45 +01:00
podman-artifact.1.md feat: add list as ls alias for artifact command. Resolved ##28372 2026-03-27 08:08:19 +01:00
podman-attach.1.md.in [DOCS] Update references common -> container-libs/common 2026-02-04 21:29:17 +10:00
podman-auto-update.1.md.in Revert "Rewrite the Quadlet documentation." 2025-09-11 19:00:19 +02:00
podman-build.1.md.in Rewrite the Quadlet documentation 2026-05-04 10:53:36 +02:00
podman-build.unit.5.md.in docs: fix incorrect page name 2026-05-05 13:00:53 +02:00
podman-commit.1.md Create a podman-troubleshooting man page 2024-08-28 05:49:45 -06:00
podman-completion.1.md Remove unnecessary backslashes 2023-08-02 15:01:16 +01:00
podman-compose.1.md.in [DOCS] Update references common -> container-libs/common 2026-02-04 21:29:17 +10:00
podman-container-checkpoint.1.md Fix documentation around checkpoints 2025-07-06 17:16:29 +02:00
podman-container-cleanup.1.md Remove future tense from man pages 2023-05-16 15:10:33 -04:00
podman-container-clone.1.md.in Fix up example description of podman-container commands 2024-02-19 15:18:51 -05:00
podman-container-diff.1.md.in fix 26348: add container diff --latest doc 2025-06-13 11:28:11 +02:00
podman-container-exists.1.md Remove future tense from man pages 2023-05-16 15:10:33 -04:00
podman-container-inspect.1.md.in Remove slirp4netns from documentation 2026-04-13 09:04:41 -04:00
podman-container-prune.1.md Fix filtering with negated labels 2026-04-29 11:18:03 +02:00
podman-container-restore.1.md fix: enforce --publish option usage with --import in podman restore 2026-02-15 09:38:58 +00:00
podman-container-runlabel.1.md.in Manpages: podman container runlabel added example with --replace 2025-08-05 18:04:37 +05:30
podman-container.1.md man pages and command help: clean up descriptions 2023-05-28 18:57:43 +02:00
podman-container.unit.5.md.in docs: fix incorrect page name 2026-05-05 13:00:53 +02:00
podman-cp.1.md docs: Improve spelling and formatting 2025-03-24 16:35:29 -06:00
podman-create.1.md.in Remove slirp4netns from documentation 2026-04-13 09:04:41 -04:00
podman-diff.1.md.in Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-events.1.md Improve OOMKilled visibility in podman events and in podman inspect docs 2026-03-11 10:15:56 -05:00
podman-exec.1.md.in feat(exec): Add --no-session flag for improved performance 2025-11-19 12:44:48 -05:00
podman-export.1.md Fix up example description of podman-export/export commands 2024-02-18 12:26:33 -05:00
podman-farm-build.1.md.in Implement --save-stages/--stage-labels for build 2026-04-17 10:00:32 -04:00
podman-farm-create.1.md Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-farm-list.1.md Fixes: #26353 2025-08-15 23:14:24 +05:30
podman-farm-remove.1.md Fix up example description of podman-farm commands 2024-02-18 08:02:29 -05:00
podman-farm-update.1.md Fix up example description of podman-farm commands 2024-02-18 08:02:29 -05:00
podman-farm.1.md document new connection/farm storage location 2024-02-08 18:05:32 +01:00
podman-generate-spec.1.md Remove slirp4netns from documentation 2026-04-13 09:04:41 -04:00
podman-generate-systemd.1.md Revert "Rewrite the Quadlet documentation." 2025-09-11 19:00:19 +02:00
podman-generate.1.md Deprecate podman generate systemd 2023-08-03 06:58:53 -04:00
podman-healthcheck-run.1.md podman-healthcheck-run: add --ignore-result flag 2026-02-09 19:52:29 +01:00
podman-healthcheck.1.md Added healthcheck documentation. 2026-02-08 10:56:05 -06:00
podman-history.1.md Apply suggestions from code review 2024-02-20 05:38:19 -05:00
podman-image-diff.1.md Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-image-exists.1.md Fix up example description of podman-image commands 2024-02-18 07:41:47 -05:00
podman-image-inspect.1.md Fix up example description of podman-image commands 2024-02-18 07:41:47 -05:00
podman-image-mount.1.md Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-image-prune.1.md Improve docs on passing multiple --filter flags 2026-04-28 14:33:54 +02:00
podman-image-scp.1.md Add --format to image scp 2026-03-19 17:42:33 +01:00
podman-image-sign.1.md.in Correct markdown in docs 2023-05-18 16:44:24 -07:00
podman-image-tree.1.md Fix up example description of podman-image commands 2024-02-18 07:41:47 -05:00
podman-image-trust.1.md.in trust: switch policy.json lookup to configfile 2026-04-20 15:11:22 +02:00
podman-image-unmount.1.md add more exmples applying current style for each page 2025-06-16 19:52:36 +02:00
podman-image.1.md man pages and command help: clean up descriptions 2023-05-28 18:57:43 +02:00
podman-image.unit.5.md.in docs: fix incorrect page name 2026-05-05 13:00:53 +02:00
podman-images.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-import.1.md Improve the file format documentation of podman-import. 2025-03-31 18:00:23 +02:00
podman-info.1.md Remove slirp4netns from documentation 2026-04-13 09:04:41 -04:00
podman-init.1.md.in Add examples of --all flag 2025-06-13 04:47:22 -04:00
podman-inspect.1.md.in Improve OOMKilled visibility in podman events and in podman inspect docs 2026-03-11 10:15:56 -05:00
podman-kill.1.md.in Fix up example description of podman-kill.1.md.in 2024-02-19 10:06:05 -05:00
podman-kube-apply.1.md Try to fix the broken formatting of man podman‐kube‐apply(1). 2023-11-06 14:53:35 +01:00
podman-kube-down.1.md.in Rewrite the Quadlet documentation 2026-05-04 10:53:36 +02:00
podman-kube-generate.1.md Add support for Job to kube generate & play 2024-09-05 11:36:38 -04:00
podman-kube-play.1.md.in Rewrite the Quadlet documentation 2026-05-04 10:53:36 +02:00
podman-kube.1.md [CI:DOCS] Update kube docs 2024-04-04 09:28:21 -04:00
podman-kube.unit.5.md.in docs: fix incorrect page name 2026-05-05 13:00:53 +02:00
podman-load.1.md Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-login.1.md.in man pages: refactor two more options 2024-09-03 11:13:46 -06:00
podman-logout.1.md.in man pages: refactor two more options 2024-09-03 11:13:46 -06:00
podman-logs.1.md.in Fix language, typos and markdown layout 2023-07-24 11:18:25 +02:00
podman-machine-cp.1.md Introduce podman machine cp command 2025-02-28 09:56:46 -05:00
podman-machine-info.1.md Add disclaimer to podman machine info manpage. 2024-09-03 15:23:18 -04:00
podman-machine-init.1.md.in Add new flag --import-native-ca for machine init/set 2026-04-01 14:12:30 +02:00
podman-machine-inspect.1.md Fixes: #26353 2025-08-15 23:14:24 +05:30
podman-machine-list.1.md.in Provider obfuscation in command line 2025-10-27 08:40:19 -05:00
podman-machine-os-apply.1.md add bootc transports to os-apply 2026-02-02 09:07:08 -06:00
podman-machine-os-upgrade.1.md Add podman machine os upgrade command 2026-01-16 14:14:06 -06:00
podman-machine-os.1.md Add podman machine os upgrade command 2026-01-16 14:14:06 -06:00
podman-machine-reset.1.md add more exmples applying current style for each page 2025-06-16 19:52:36 +02:00
podman-machine-rm.1.md Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-machine-set.1.md.in Add new flag --import-native-ca for machine init/set 2026-04-01 14:12:30 +02:00
podman-machine-ssh.1.md Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-machine-start.1.md.in Add update-connection to machine start and init 2025-11-04 10:35:28 -06:00
podman-machine-stop.1.md Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-machine.1.md [DOCS] Fix reference to containers.conf 2026-02-04 19:43:26 +10:00
podman-manifest-add.1.md.in Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-manifest-annotate.1.md.in Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-manifest-create.1.md.in Add man page content for artifacts 2024-02-29 11:47:44 -05:00
podman-manifest-exists.1.md Fix up example description of podman-manifest commands 2024-02-17 13:54:04 -05:00
podman-manifest-inspect.1.md.in Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-manifest-push.1.md.in Add --sign-by-sq-fingerprint to push operations 2025-09-11 20:32:32 +02:00
podman-manifest-remove.1.md podman-manifest-remove: update docs and help output 2024-09-17 11:36:12 -04:00
podman-manifest-rm.1.md Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-manifest.1.md podman-manifest-remove: update docs and help output 2024-09-17 11:36:12 -04:00
podman-mount.1.md.in Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-network-connect.1.md Update man page documentation to remove CNI references 2026-01-27 16:32:38 +05:30
podman-network-create.1.md.in Rewrite the Quadlet documentation 2026-05-04 10:53:36 +02:00
podman-network-disconnect.1.md Fix up example description of podman-network commands 2024-02-18 07:48:08 -05:00
podman-network-exists.1.md Fix up example description of podman-network commands 2024-02-18 07:48:08 -05:00
podman-network-inspect.1.md podman network inspect: include running containers 2024-02-28 16:33:26 +01:00
podman-network-ls.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-network-prune.1.md Improve docs on passing multiple --filter flags 2026-04-28 14:33:54 +02:00
podman-network-reload.1.md.in Remove iptables references in docs 2025-11-21 01:10:19 +01:00
podman-network-rm.1.md Removed the 'Deleted: ' prefix from each example 2025-06-17 19:00:44 +09:00
podman-network-update.1.md Fix up example description of podman-network commands 2024-02-18 07:48:08 -05:00
podman-network.1.md Remove misleading configurable reference in podman-network docs 2026-04-13 09:05:09 -04:00
podman-network.unit.5.md.in docs: fix incorrect page name 2026-05-05 13:00:53 +02:00
podman-pause.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-pod-clone.1.md.in docs: add resource limit examples to podman pod clone manpage 2025-07-28 20:28:17 +05:30
podman-pod-create.1.md.in Remove slirp4netns from documentation 2026-04-13 09:04:41 -04:00
podman-pod-exists.1.md Fix up example description of podman-pod commands 2024-02-19 10:03:30 -05:00
podman-pod-inspect.1.md.in Fixes: #26353 2025-08-15 23:14:24 +05:30
podman-pod-kill.1.md.in Fix up example description of podman-pod commands 2024-02-19 10:03:30 -05:00
podman-pod-logs.1.md.in Fix up example description of podman-pod commands 2024-02-19 10:03:30 -05:00
podman-pod-pause.1.md Add examples of --all flag 2025-06-13 04:47:22 -04:00
podman-pod-prune.1.md add more exmples applying current style for each page 2025-06-16 19:52:36 +02:00
podman-pod-ps.1.md.in ps: format labels as comma separated key=value for Docker compatibility 2026-04-30 18:04:49 +02:00
podman-pod-restart.1.md fix podman-pod-restart.1.md typo 2024-04-18 19:53:33 -04:00
podman-pod-rm.1.md.in Fix up example description of podman-pod commands 2024-02-19 10:03:30 -05:00
podman-pod-start.1.md.in Fix up example description of podman-pod commands 2024-02-19 10:03:30 -05:00
podman-pod-stats.1.md.in Bunch of trivial manpage fixes 2025-06-12 02:22:42 -04:00
podman-pod-stop.1.md.in Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-pod-top.1.md.in Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-pod-unpause.1.md Fix up example description of podman-pod commands 2024-02-19 10:03:30 -05:00
podman-pod.1.md man pages and command help: clean up descriptions 2023-05-28 18:57:43 +02:00
podman-pod.unit.5.md.in docs: fix incorrect page name 2026-05-05 13:00:53 +02:00
podman-port.1.md.in Apply suggestions from code review 2024-02-20 05:46:41 -05:00
podman-ps.1.md.in ps: format labels as comma separated key=value for Docker compatibility 2026-04-30 18:04:49 +02:00
podman-pull.1.md.in Rewrite the Quadlet documentation 2026-05-04 10:53:36 +02:00
podman-push.1.md.in #28374 de-duplicated --quiet option from docs 2026-03-28 09:50:41 +00:00
podman-quadlet-basic-usage.7.md docs: fix incorrect page name 2026-05-05 13:00:53 +02:00
podman-quadlet-install.1.md Merge pull request #27384 from flouthoc/multi-file-quadlet 2025-11-18 16:01:08 +00:00
podman-quadlet-list.1.md.in Merge pull request #28413 from simonbrauner/issue-26786 2026-04-28 13:59:42 -04:00
podman-quadlet-print.1.md docs: Add references to quadlet 2025-11-08 08:56:06 +01:00
podman-quadlet-rm.1.md docs: Add references to quadlet 2025-11-08 08:56:06 +01:00
podman-quadlet.1.md Docs: improve readability of quadlet documentation 2026-04-02 14:03:27 +05:30
podman-remote.1.md [DOCS] Update references common -> container-libs/common 2026-02-04 21:29:17 +10:00
podman-rename.1.md Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-restart.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-rm.1.md.in docs: add examples for rm with --force and --time 2026-02-22 19:24:02 +02:00
podman-rmi.1.md Merge pull request #26388 from tyll/rmi-no-prune 2025-06-12 13:42:50 +00:00
podman-run.1.md.in Remove slirp4netns from documentation 2026-04-13 09:04:41 -04:00
podman-save.1.md.in [DOCS] Update references common -> container-libs/common 2026-02-04 21:29:17 +10:00
podman-search.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-secret-create.1.md Fix documentation inconsistency about labels 2026-02-20 16:10:47 +02:00
podman-secret-exists.1.md Remove future tense from man pages 2023-05-16 15:10:33 -04:00
podman-secret-inspect.1.md Update docs/source/markdown/podman-secret-inspect.1.md 2025-06-12 15:52:31 +02:00
podman-secret-ls.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-secret-rm.1.md docs: add an example to podman-secret-rm man page 2025-06-18 21:10:17 +09:00
podman-secret.1.md Add support for secret exists 2023-04-03 15:33:50 +03:00
podman-start.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-stats.1.md.in Remove slirp4netns from documentation 2026-04-13 09:04:41 -04:00
podman-stop.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-system-check.1.md Skip layer digests for podman system check --quick 2025-06-05 17:00:50 +00:00
podman-system-connection-add.1.md Implement TLS API Support 2025-09-26 09:09:54 -06:00
podman-system-connection-default.1.md Fix up example description of podman-system commands 2024-02-20 08:18:51 -05:00
podman-system-connection-list.1.md Implement TLS API Support 2025-09-26 09:09:54 -06:00
podman-system-connection-remove.1.md Add examples of --all flag 2025-06-13 04:47:22 -04:00
podman-system-connection-rename.1.md Fix up example description of podman-system commands 2024-02-20 08:18:51 -05:00
podman-system-connection.1.md Fix up example description of podman-system commands 2024-02-20 08:18:51 -05:00
podman-system-df.1.md Fixes: #26353 2025-08-15 23:14:24 +05:30
podman-system-hyperv-prep.1.md Add command podman system hyperv-prep 2026-04-29 23:00:29 +02:00
podman-system-migrate.1.md Add migration code for BoltDB to SQLite 2026-05-08 14:07:17 -04:00
podman-system-prune.1.md Improve docs on passing multiple --filter flags 2026-04-28 14:33:54 +02:00
podman-system-renumber.1.md [DOCS] Update references common -> container-libs/common 2026-02-04 21:29:17 +10:00
podman-system-reset.1.md add more exmples applying current style for each page 2025-06-16 19:52:36 +02:00
podman-system-service.1.md [DOCS] Update references common -> container-libs/common 2026-02-04 21:29:17 +10:00
podman-system.1.md Add command podman system hyperv-prep 2026-04-29 23:00:29 +02:00
podman-systemd.unit.5.md Rewrite the Quadlet documentation 2026-05-04 10:53:36 +02:00
podman-tag.1.md Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-top.1.md.in docs: add missing groups and hgroups descriptors to podman-top documentation 2025-08-15 19:46:56 +05:30
podman-unmount.1.md.in add more exmples applying current style for each page 2025-06-16 19:52:36 +02:00
podman-unpause.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-unshare.1.md Fix up example description of podman-unshare.1.md 2024-02-17 13:54:29 -05:00
podman-untag.1.md Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-update.1.md.in Add ulimits to podman update API 2025-11-20 22:59:50 -08:00
podman-version.1.md [CI:DOCS] man pages: document some --format options 2022-09-15 09:59:32 -06:00
podman-volume-create.1.md Fix documentation inconsistency about labels 2026-02-20 16:10:47 +02:00
podman-volume-exists.1.md Remove future tense from man pages 2023-05-16 15:10:33 -04:00
podman-volume-export.1.md Refactor volume import to support the remote client 2025-06-23 13:42:22 -04:00
podman-volume-import.1.md Refactor volume import to support the remote client 2025-06-23 13:42:22 -04:00
podman-volume-inspect.1.md Only stop chowning volumes once they're not empty 2024-05-22 17:47:01 -04:00
podman-volume-ls.1.md.in docs: Deduplicate --filter descriptions 2025-12-05 00:36:53 +00:00
podman-volume-mount.1.md Fix up example description of podman-volume commands 2024-02-19 10:09:06 -05:00
podman-volume-prune.1.md Fix filtering with negated labels 2026-04-29 11:18:03 +02:00
podman-volume-reload.1.md Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-volume-rm.1.md Add information about --latest support on man pages 2024-01-23 07:28:40 -05:00
podman-volume-unmount.1.md Fix up example description of podman-volume commands 2024-02-19 10:09:06 -05:00
podman-volume.1.md volume prune: match Docker default and add --all 2026-03-19 13:40:45 +01:00
podman-volume.unit.5.md.in docs: fix incorrect page name 2026-05-05 13:00:53 +02:00
podman-wait.1.md.in Fixes: #26691 2025-08-06 22:34:18 +03:00
podman.1.md Remove slirp4netns from documentation 2026-04-13 09:04:41 -04:00
podmansh.1.md Revert "Rewrite the Quadlet documentation." 2025-09-11 19:00:19 +02:00