2017-02-13 8 views
4

В нашей внутренней тестовой среде мы предоставляем CentOS VM с сервера на основе vSphere. Изображения являются vanilla 7.1 с пакетами и связанной конфигурацией для поддержки аутентификации через LDAP. У меня установлен Docker 1.13.1 с драйвером OverlayFS в файловой системе xfs.Разрешения на доступ к хосту на уровне докеров

FROM centos:7 
RUN useradd dockeruser 
USER dockeruser 
VOLUME /data 

На хосте:

mkdir data 
echo "hello from host" > data/host-msg.txt 
docker run -ti --rm -v $(pwd)/data:/data testimage bash 

Внутри контейнера:

echo "hello from container" > /data/container-msg.txt 
bash: /data/container-msg.txt: Permission denied 

Листинг содержимого каталога внутри контейнера:

drwxr-xr-x 2 12345 13000 25 Feb 12 21:36 data 
drwxr-xr-x 5 root root 360 Feb 12 21:36 dev 
drwxr-xr-x 1 root root  62 Feb 12 21:36 etc 

В data каталог шоу владение в формате uid/gid, а не имя пользователя/groupname.

Я прочитал много статей и вопросов, описывающих это поведение, и variousstrategies до workaround.

Но. В моей локальной системе разработки Fedora 25 я не получаю такого поведения. Я выполняю вышеописанную процедуру, могу писать на монтируемый хост/файл данных, а в списке каталогов отображается имя пользователя/groupname.

/ 
    drwxrwxr-x 2 dockeruser dockeruser 4096 Feb 12 04:36 data 
    drwxr-xr-x 5 root  root   360 Feb 12 22:00 dev 
    drwxr-xr-x 1 root  root  4096 Feb 12 22:00 etc 

/data 
    -rw-rw-r-- 1 dockeruser dockeruser 21 Feb 12 22:04 container-msg.txt 

Чтобы сделать все как можно более близкое к конфигурации лаборатории я встал на CentOS 7.1 VM на моей системе Dev через Libvirt и снова получил те же результаты - не баловаться с UID/GID отображения, пространствами имен пользователей, ничего. Запись на хост смонтированного тома изнутри контейнера Just Worked, из коробки.

Что может быть причиной такого поведения? Является ли LDAP в лабораторной виртуальной машине каким-то образом заданием разрешений на уровне файловой системы? есть ли что-то конкретное, я мог бы попросить нашу операционную команду проверить или временно отключить, чтобы попытаться устранить эту проблему?

И, наконец, и, возможно, самое важное, если проблемы с разрешениями на томах, монтируемых на хосте, для меня вообще не являются проблемами на чистой рабочей станции CentOS или Fedora, то почему она все еще остается в Докере сообщество? Есть ли какая-то конфигурация в этих установках, которая так принципиально отличается от того, что используют все остальные (в состав моей лаборатории входят лаборатории VM), что все работает?

+0

Вы нашли решение? – Xplouder

ответ

0

В каталоге данных отображается собственность в формате uid/gid, а не имя_пользователя/группы.

Это потому, что в вашем контейнере нет сопоставления для этого uid/guid (check/etc/passwd). Фактически, на самом деле файлы имеют uid/guid всегда. Это просто функция приложения/os, чтобы вернуть имена. Попробуйте stat путь изнутри/снаружи контейнера. Они должны иметь одинаковый uid/guid

stat /data 
stat /path/on/host