#linux #docker #filesystems
#linux #docker #файловые системы
Вопрос:
Я хочу запустить следующий контейнер docker и получить к нему доступ с терминала:
docker run -it docker:5000/builds/build-lnx64-centos7:latest /bin/bash
Проблема в том, что внутри терминала я не могу найти ни одного из файлов в моей файловой системе. Нет ~/Desktop
и подобных каталогов.
Вопрос: как получить доступ к файловой системе моего локального компьютера из контейнера docker?
Ответ №1:
По умолчанию контейнеры не могут видеть файловую систему своего хоста.
Если вы хотите достичь этого, вам придется явно «монтировать» любые каталоги, которые вы хотите видеть, используя -v
флаг, вот так:
docker run -v ~/Desktop:/host-desktop -it docker:5000/builds/build-lnx64-centos7:latest /bin/bash
Если вы запустите эту команду, вы увидите содержимое вашего рабочего стола в файловой системе контейнера по адресу /host-desktop
.
Вы действительно не хотели бы, чтобы ваш контейнер мог видеть всю файловую систему хоста. Это было бы опасно, особенно если у контейнера есть разрешение на запись. Вы всегда должны «монтировать» только те файлы / каталоги, к которым вы хотите, чтобы контейнер имел доступ.
По большей части, любой проект, над которым я работал, использующий docker, выполняет «монтирование тома», чтобы контейнер мог записывать файлы, а разработчик мог легко получить к ним доступ на хосте (например, тесты selenium, делающие скриншоты), или чтобы разработчик мог редактировать исходный код, и контейнер увидит обновление и горячую перезагрузку (например, разработка nodejs). При выполнении последнего (пример горячей перезагрузки) обычно целесообразно монтировать в режиме только для чтения.
Смотрите документы для получения более подробной информации:https://docs.docker.com/engine/reference/commandline/run/#mount-volume—v—read-only