2015-09-04 2 views
5

При создании контейнеров Docker я постоянно сталкиваюсь с проблемой того, что UID/GID не отражается в контейнере (я понимаю, что это по дизайну). То, что я ищу, является способом разумного разрешения хоста и/или репликации UID/GID из учетных записей хост-пользователей/групп в моем контейнере Docker. Например:Docker реплицирует UID/GID в контейнере с хоста

хозяин -

woot4moo: х: 504: 504: woot4moo:/Главная/woot4moo:/бен/Баш

Я хотел бы такое же поведение в контейнере Докер. Это, как говорится, это даже правильный способ сделать это? Моя вера я мог бы просто запустить:

useradd -u 504 -g 504 woot4moo 

как часть моего Dockerfile, но я не уверен, если это является допустимым.

ответ

5

Вы не хотели бы запускать это как часть процесса сборки изображения (в вашем файле Docker), потому что хост, на котором работает какой-либо контейнер, часто находится не хост, на котором вы строите изображение.

Одним из способов решения этой проходит в информации UID/GID с помощью переменных окружения:

docker run -e APP_UID=100 -e APP_GID=100 ... 

И затем есть ENTRYPOINT сценарий, который включает в себя что-то вроде следующего перед запуском CMD:

useradd -c 'container user' -u $APP_UID -g $APP_GID appuser 
chown -R $APP_UID:$APP_GID /app/data 
Смежные вопросы