Linux Labs

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

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

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

Шаг 4 из 7 · на машине · 6 мин

Каталог хоста

Подключишь в контейнер обычный каталог хоста и увидишь, чьими становятся файлы, которые пишет контейнер.

Вместо имени тома в -v можно дать путь к каталогу хоста — это bind mount: -v /home/student/notes-host:/data. Путь начинается с /, ~ или ./ — так docker отличает его от имени тома. Контейнер видит каталог хоста как есть: что процесс пишет в /data, сразу появляется в каталоге хоста, и наоборот.

Упражнение · посмотреть

Запиши файл из контейнера в каталог хоста

Запусти notes с каталогом ~/notes-host на месте /data, создай из контейнера файл notes.txt, посмотри каталог с хоста и допиши в файл строку.

Сначала предположи

Ты дописываешь строку в notes.txt со стороны хоста — пользователем student. Что ответит оболочка?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

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

Права на файлы ядро проверяет по числам — UID владельца файла и UID процесса. Процесс в notes работает от root, UID 0, и файл, который он создал, на хосте тоже принадлежит root. Права rw-r--r-- дают остальным только чтение, поэтому student дописать его не может.

Бывает и наоборот: процесс в контейнере работает от обычного пользователя. Тогда к файлам каталога хоста он получает доступ по тем же правам, что любой пользователь хоста с тем же UID. Как запустить процесс контейнера от другого пользователя — в уроке о лимитах и пользователе в контейнере.

Ubuntu 24.04
Загрузка…