.. _cephadm-docker-live-restore:
=======================================
Cephadm and Docker Engine: Live Restore
=======================================
When Docker is used as the container engine, cephadm configures each Ceph
daemon's systemd service unit differently from how it configures Podman-based
units. This section describes those differences and explains how Docker's
optional `Live Restore
`_ feature is facilitated
with cephadm-managed daemons.
How Cephadm Runs Containers with Docker
========================================
Cephadm starts Docker-managed containers in **detached mode** (``docker run
-d``). The container therefore runs in the background rather than being tied to
the foreground process that systemd spawns. To allow systemd to keep track of
the container, cephadm inspects the container immediately after it starts,
retrieves its PID via ``docker inspect``, and writes the parent PID to a PID
file. The systemd unit is configured as ``Type=forking`` and ``PIDFile`` points
to that file.
The systemd unit also sets ``Restart=always``, which means systemd will restart
the service whenever the tracked process exits for any reason.
This differs from Podman, where cephadm uses ``Restart=on-failure`` (restarting
only on non-zero exit) and cleans up both a PID file and a CID file on each
stop.
Behavior With Live Restore Enabled
====================================
When `Live Restore `_ is
enabled in the Docker daemon configuration, containers continue running if the
Docker Engine process is down or restarted for example during a system update via
the command:
.. prompt:: bash #
systemctl restart docker.service
The PID tracked by systemd remains valid throughout the daemon restart, so
systemd does not trigger a service restart.
Ceph daemons stay online across Docker Engine upgrades or unplanned daemon
restarts with no disruption.
This is the **recommended configuration** for production deployments that use
Docker as the container engine.
Behavior With Live Restore Disabled
=====================================
When Live Restore is disabled (the Docker default), a Docker Engine restart
stops all running containers. Systemd detects that the tracked PID has exited
and, because ``Restart=always`` is set, immediately restarts the service unit.
This brings the container back up, but there is a brief window during which the
Ceph daemon is unavailable.
For most workloads this is acceptable. However, if your deployment requires
continuous daemon availability across engine-level restarts, consider enabling
Live Restore.