Как получить доступ к файлам в хосте из Docker-контейнера? - PullRequest
0 голосов
/ 11 марта 2019

Итак, у меня есть бионический контейнер Docker Ubuntu на хосте сервера Ubuntu. Из контейнера я вижу, что диск hsot монтируется как / etc / hosts, который не является каталогом. Пробовал размонтировать и перемонтировать в другом месте, но сказал разрешение, это происходит, когда я пытаюсь от имени root. Итак, как вы получаете доступ к содержимому вашей хост-системы?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Docker напрямую управляет файлами /etc/hosts в контейнерах . Вы не можете подключить файл там.

Сопоставление имен хостов с IP-адресами вручную в нескольких местах может быть сложным, чтобы всегда быть в курсе. Рассмотрите возможность запуска DNS-сервера, такого как BIND или dnsmasq, или использования размещенной службы, такой как Amazon Route 53, или системы обнаружения служб, такой как Consul (которая, кстати, предоставляет интерфейс DNS).

Если вам действительно нужно добавить записи в файл /etc/hosts контейнера, опция docker run --add-host или Docker Compose extra_hosts:, настройка , сделает это.

Как правило, контейнер не может получить доступ к файловой системе хоста, за исключением случаев, когда опция docker run -v отображает определенные каталоги в контейнер. Также, как правило, вы не можете напрямую изменять точки монтирования в контейнере; остановить, удалить и воссоздать его с различными -v параметрами.

0 голосов
/ 11 марта 2019

Во-первых, etc/hosts - это сетевой файл, присутствующий во всех системах Linux, он не связан с дисками или докером.

Во-вторых, если вы хотите получить доступ к части файловой системы хоста внутри контейнера Docker, вынужно использовать тома .Используя флаг -v в команде запуска docker, вы можете указать каталог на хосте для монтирования в контейнер в формате:

-v /path/on/host:/path/inside/container

, например:

docker run -v /path/on/host:/path/inside/container <image_name>
...