Создаем override.conf для сервиса docker командой systemctl edit docker.service:

[Service]
ExecStartPre=/usr/bin/env install -m 711 -o root -g root -vd /var/lib/docker_ /var/lib/docker
ExecStartPre=/usr/bin/env mount -t tmpfs none /var/lib/docker
ExecStartPre=/usr/bin/env rsync -a /var/lib/docker_/ /var/lib/docker/

ExecStopPost=/usr/bin/env install -m 711 -o root -g root -vd /var/lib/docker_
ExecStopPost=-/usr/bin/env rsync -a /var/lib/docker/ /var/lib/docker_/
ExecStopPost=/usr/bin/env umount /var/lib/docker

Где:

  • /var/lib/docker_ - каталог для хранения образов и контейнеров на диске
  • /var/lib/docker - tmpfs в RAM

Перед запуском сервиса docker будут создаваться, при необходимости нужные для работы каталоги, затем монтируется tmpfs в /var/lib/docker после чего в этот каталог будет скопировано содержимое с диска /var/lib/docker_.

При остановке сервиса все происходи в обратной последовательности, после остановки сервиса docker данные копируются из tmpfs на диск, после чего /var/lib/docker отмонтируется, а все данные из этого каталога мгновенно уничтожаются.

Таким образом при запуске сервиса автоматически файловая система контейнеров и образов помещается в RAM, а при остановке копируется на диск, чтобы при следующем запуске данные не потерялись.


Comments

comments powered by Disqus