
Cloud & DevOps: от локального приложения до надёжного сервиса Урок 10 из 24
Тома, bind mounts и доказательство сохранности данных
Выносим состояние из контейнера, пересоздаём его и доказываем, что заметка пережила замену процесса.
Текст переведён с помощью ИИ.
Этот урок начинается с нуля. Незнакомое слово здесь не считается вашим пробелом: мы сначала создадим образ, затем дадим точное значение и только потом применим его.
Где мы находимся
Полётное повторение. В прошлом уроке была опора source → test → build → copy binary → non-root runtime. Не подглядывая, назовите её четыре звена и только затем сравните с записью.
Результат урока
Выносим состояние из контейнера, пересоздаём его и доказываем, что заметка пережила замену процесса. Не переходите дальше, пока не можете объяснить, что проверяет каждая команда и какой отказ она обнаруживает.
Сначала знакомый образ
Гостиничный номер освобождается вместе с временными вещами гостя, но чемодан в камере хранения остаётся. Файловая система контейнера похожа на номер, volume — на отдельную камеру хранения. Но даже камера хранения не заменяет резервную копию в другом месте.
Аналогия помогает начать рассуждение, но не заменяет устройство технологии. Ниже мы уточним каждое слово.
Опорный сигнал урока
container сменился; volume остался; restore доказал данные
Прочитайте цепочку слева направо. Она отвечает не на вопрос «какую команду запомнить», а на вопрос «почему следующий шаг следует из предыдущего».
Новые слова простыми словами
- Volume — Хранилище с жизненным циклом отдельно от контейнера.
- Bind mount — Прямое подключение конкретного каталога хоста.
- Состояние — Данные, которые должны пережить перезапуск или замену процесса.
- Backup — Отдельная копия, из которой проверено восстановление.
Разбираем без спешки
Контейнер должен быть заменяемым, а состояние — иметь явный жизненный цикл. Named volume удобен для данных Docker; bind mount удобен, когда оператору нужен конкретный путь хоста. Ни один из них сам по себе не является резервной копией.
Сейчас не нужно запоминать формулировку дословно. Найдите в ней причинную связь и привяжите её к опорному сигналу выше.
Сначала предскажите результат
До запуска ответьте на бумаге: что должно измениться, что должно остаться прежним и какой вывод команды подтвердит ваш прогноз? Даже неверный прогноз полезен, если после опыта вы можете объяснить расхождение.
Опыт маленькими шагами
Выполните команды из корня course/cloud-devops-lab. Команды рассчитаны на учебную среду. Перед командой, меняющей сервер или данные, прочитайте её целиком и проверьте текущий каталог. Запускайте блок по одной смысловой группе. После каждой остановитесь и сопоставьте результат со своим прогнозом.
docker volume create cloudlab-practice
docker run -d --name cloudlab-data -p 8080:8080 -v cloudlab-practice:/data cloudlab:lesson-09
sleep 1
curl -fsS -X POST -d 'note=survives-recreate' http://127.0.0.1:8080/notes >/dev/null
docker rm -f cloudlab-data
docker run -d --name cloudlab-data -p 8080:8080 -v cloudlab-practice:/data cloudlab:lesson-09
sleep 1
curl -fsS http://127.0.0.1:8080/ | grep survives-recreate
docker rm -f cloudlab-data
Что именно делает этот опыт
Упражнение записывает заметку, пересоздаёт контейнер и читает её снова. Это проверяет отделение данных от процесса. Затем backup и restore доказывают ещё один путь; простое наличие архива доказательством не считается.
Что должно получиться
- Заметка остаётся после удаления контейнера.
- Команда завершается предсказуемым кодом.
- Результат можно повторить на чистой среде.
Соберите целое по опорной схеме
Проведите пальцем или карандашом по четырём блокам и расскажите весь урок одним связным объяснением.
Воспроизведите без подсказки
- Закройте схему и нарисуйте четыре блока по памяти.
- Объясните каждый переход словами «потому что».
- Дайте определение одному новому термину, не повторяя текст дословно.
- Назовите один сигнал, который доказывает результат.
Найдите и исправьте ошибку
Ошибка: «Volume — это резервная копия». Исправление: volume переживает контейнер, но удаление, повреждение диска или ошибка данных может уничтожить и его.
Задание
Теперь соберите тот же смысл самостоятельно. Можно смотреть на опорную схему; цель — не экзамен на память, а воспроизводимый результат.
Обязательное. Напишите команды, которые создают named volume, записывают в него файл через временный контейнер и читают тот же файл через второй контейнер. Отправьте только команды или скрипт POSIX sh без реальных ключей и токенов.
Критерии готовности
- Вы понимаете каждую запускаемую строку.
- Повторный запуск даёт ожидаемый результат или безопасно объяснённое отличие.
- В выводе нет настоящих ключей, токенов и паролей.
- Вы можете показать факт, который подтверждает успех.
Если проверка не прошла, зафиксируйте ожидаемое и фактическое, вернитесь к одному разорванному звену опоры и повторите. Ошибка не отнимает у вас право продолжать обучение.
По желанию. Запишите один возможный отказ и сигнал, по которому вы его заметите.
Открытая перспектива
Следующий урок добавит новую опору: Docker Compose: сервисы, сеть и декларативный запуск.
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.