Linux Labs

Контейнеры: Docker и compose / Ступень 5 из 11

Тома: данные переживают контейнер

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 3 из 7 · на машине · 7 мин

Именованный том

Вынесешь /data из контейнера в том — заметки переживут пересоздание.

Том — каталог, которым docker управляет отдельно от слоёв контейнера. Ключ -v имя:путь подключает его внутрь контейнера:

bash
sudo docker run -d --name notes -p 8080:8080 -v notes-data:/data notes:1

notes-data — имя тома, /data — куда он встанет внутри. Тома с таким именем ещё нет — docker создаст его сам. Всё, что процесс пишет в /data, ложится в том, мимо слоя контейнера. docker rm удаляет контейнер, а том остаётся, и следующий контейнер с тем же -v видит те же файлы.

Тома перечисляет docker volume ls, а подключения контейнера — раздел Mounts в выводе docker inspect.

Упражнение · сделать

Сохрани заметки в томе

Пересоздай контейнер notes с томом notes-data на месте /data (порт 8080 тот же), запиши в /data/notes.txt любую заметку и пересоздай контейнер ещё раз. Заметка должна остаться.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Подключить к notes том notes-data ещё не выполнена
  • Записать заметку и пересоздать контейнер ещё не выполнена

Том лежит на хосте — так называют машину, на которой работает docker, — в каталоге docker: sudo docker volume inspect notes-data покажет строку "Mountpoint": "/var/lib/docker/volumes/notes-data/_data". Файлы там — обычные файлы хоста. Их владелец — тот, от кого пишет процесс в контейнере; у notes это root, и sudo ls -l в этом каталоге покажет root root. Удаляет том docker volume rm notes-data — когда он больше не нужен.

Проверь себя 1 вопрос

Контейнер notes с томом notes-data работает. Что напечатает sudo docker volume rm notes-data?

  • Отложенного удаления нет: команда сразу отвечает volume is in use, и том остаётся.

  • Вопроса нет: команда сразу печатает ошибку volume is in use с ID контейнера.

  • Подключённый том docker не удаляет: Error response from daemon: remove notes-data: volume is in use.

Подключённый том docker не удаляет — в ответе volume is in use и ID контейнера. Сначала удаляют контейнер, потом docker volume rm.

Цели шага

0 из 2
  • Подключить к notes том notes-data — ещё не выполнена
  • Записать заметку и пересоздать контейнер — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Подключить к notes том notes-data — ещё не выполнена
  • Записать заметку и пересоздать контейнер — ещё не выполнена
Загрузка…