Введение
В этой лабораторной работе вы научитесь использовать команду docker checkpoint create для сохранения состояния работающего контейнера. Мы начнём с запуска простого контейнера Ubuntu, который будет служить целью для наших операций создания контрольных точек.
После настройки контейнера вы создадите контрольную точку для работающего контейнера, эффективно фиксируя его текущее состояние. Затем мы проверим, что контрольная точка была успешно создана. Наконец, вы изучите, как создать контрольную точку и указать пользовательский каталог для хранения данных контрольной точки. Этот практический опыт продемонстрирует применение технологии создания контрольных точек в Docker-контейнерах.
Запуск контейнера для создания контрольной точки
На этом шаге мы запустим простой Docker-контейнер, для которого позже создадим контрольную точку. Создание контрольных точек позволяет сохранить состояние работающего контейнера и восстановить его позже. Это полезно для миграции контейнеров, отладки или создания снимков состояния.
Сначала нам нужно загрузить образ ubuntu из Docker Hub. Этот образ небольшой и подходит для нашей демонстрации. Откройте терминал в среде LabEx.
docker pull ubuntu
Вы увидите вывод, указывающий на загрузку образа. После завершения загрузки вы можете проверить наличие образа локально, выведя список образов.
docker images
Найдите ubuntu в списке образов.
Теперь давайте запустим контейнер на основе образа ubuntu. Мы выполним внутри контейнера простую команду, которая будет поддерживать его работу, например sleep infinity. Также мы присвоим контейнеру имя для удобства дальнейшего обращения. Назовём его my-checkpoint-container.
docker run -d --name my-checkpoint-container ubuntu sleep infinity
Флаг -d запускает контейнер в detached mode (фоновом режиме). Флаг --name присваивает контейнеру имя. ubuntu — это используемый образ, а sleep infinity — команда, которая будет выполняться внутри контейнера для поддержания его работы.
После выполнения команды Docker выведет полный идентификатор контейнера. Вы можете проверить, что контейнер работает, выведя список активных контейнеров.
docker ps
В списке вы должны увидеть контейнер с именем my-checkpoint-container и статусом Up. Это подтверждает, что наш контейнер работает и готов к созданию контрольной точки на следующих шагах.
Создание контрольной точки для работающего контейнера
На этом шаге мы создадим контрольную точку для контейнера, запущенного на предыдущем этапе. Создание контрольной точки сохраняет текущее состояние контейнера, включая его память, процессы и изменения файловой системы, на диск. Это позволяет приостановить контейнер и возобновить его работу позже с момента создания контрольной точки.
Для создания контрольной точки используется команда docker checkpoint create. Эта команда требует указания имени контейнера и имени контрольной точки. Назовём нашу контрольную точку my-first-checkpoint.
docker checkpoint create my-checkpoint-container my-first-checkpoint
Выполнение команды займёт некоторое время, так как Docker сохраняет состояние контейнера. При успешном выполнении команды вы не увидите значительного вывода.
После создания контрольной точки контейнер my-checkpoint-container продолжит работать. Создание контрольной точки не останавливает контейнер, а лишь создаёт снимок его состояния.
На следующем шаге мы проверим, что контрольная точка была успешно создана и доступна.
Проверка созданной контрольной точки
На этом шаге мы проверим, что созданная ранее контрольная точка существует и связана с нашим контейнером. Docker предоставляет команду для вывода списка контрольных точек конкретного контейнера.
Чтобы получить список контрольных точек для контейнера my-checkpoint-container, используйте команду docker checkpoint ls с указанием имени контейнера:
docker checkpoint ls my-checkpoint-container
Эта команда отобразит список доступных контрольных точек для указанного контейнера. В выводе вы должны увидеть my-first-checkpoint, что подтверждает успешное создание контрольной точки и её готовность к использованию для восстановления состояния контейнера при необходимости.
Возможность просмотра списка контрольных точек важна для управления ими, особенно когда у вас есть несколько контрольных точек для одного контейнера или контрольные точки для разных контейнеров.
На следующем шаге мы рассмотрим создание контрольной точки в другой директории.
Создание контрольной точки в пользовательской директории
На этом шаге мы научимся создавать контрольную точку в указанной директории. По умолчанию Docker сохраняет контрольные точки в стандартном расположении внутри корневой директории данных Docker. Однако иногда может потребоваться хранить контрольные точки в другом месте, например, на другом диске или в общем хранилище.
Для указания пользовательской директории используется флаг --checkpoint-dir с командой docker checkpoint create. Сначала создадим новую директорию в домашнем каталоге для хранения контрольных точек:
mkdir ~/project/my-checkpoints
Теперь создадим ещё одну контрольную точку для работающего контейнера my-checkpoint-container, указав директорию ~/project/my-checkpoints в качестве места хранения. Назовём эту контрольную точку my-second-checkpoint:
docker checkpoint create --checkpoint-dir ~/project/my-checkpoints my-checkpoint-container my-second-checkpoint
Эта команда создаст данные контрольной точки в директории ~/project/my-checkpoints. Вы можете проверить содержимое этой директории:
ls ~/project/my-checkpoints/my-second-checkpoint
Вы увидите несколько файлов и директорий, созданных в процессе создания контрольной точки.
Несмотря на указание пользовательской директории, контрольная точка остаётся связанной с контейнером. При повторном выводе списка контрольных точек вы увидите обе точки: my-first-checkpoint и my-second-checkpoint:
docker checkpoint ls my-checkpoint-container
Это демонстрирует, что Docker отслеживает контрольные точки независимо от их места хранения. Использование пользовательской директории даёт больше гибкости в управлении данными контрольных точек.
Резюме
В этой лабораторной работе мы изучили, как использовать команду docker checkpoint create для сохранения состояния работающего контейнера. Мы начали с запуска простого контейнера ubuntu с именем my-checkpoint-container с помощью команды docker run -d --name my-checkpoint-container ubuntu sleep infinity, убедившись, что он работает в фоновом режиме. Статус контейнера мы проверили командой docker ps.
Затем мы создали контрольную точку для работающего контейнера. Этот процесс включает использование команды docker checkpoint create для фиксации текущего состояния контейнера, включая его память и процессы, что позволяет впоследствии восстановить это состояние. Мы также рассмотрели, как проверить успешное создание контрольной точки и как указать пользовательскую директорию для хранения данных контрольной точки.



