Вынесешь /data из контейнера в том — заметки переживут пересоздание.
Том — каталог, которым docker управляет отдельно от слоёв контейнера. Ключ -v имя:путь подключает его внутрь контейнера:
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 — когда он больше не нужен.
Контейнер 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.