Использование явного UID / GID в Dockerfile - PullRequest
0 голосов
/ 10 сентября 2018

На странице «Лучшие практики» упоминается следующее: (https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user)

Consider an explicit UID/GID
Users and groups in an image are assigned a non-deterministic UID/GID in that the “next” UID/GID is assigned regardless of image rebuilds. So, if it’s critical, you should assign an explicit UID/GID."

Какое значение имеет явное указание UID / GID? При каком сценарии, позволяющем системе назначать UID / GID, нетобеспечить достаточную безопасность?

Явное указание этих значений, по-видимому, имеет обратную сторону, приводя к ситуации, в которой явно указанное значение (UID / GID) уже используется.

1 Ответ

0 голосов
/ 10 сентября 2018

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

# this needs to be readable by the container process
# it runs as non-root user "www-data"
# we think its uid is 18
sudo chown -R 18 data
sudo docker run -v ./data:/data -p 8888:80 imagename

Теперь, если из-за изменений в базовом изображении вне контроля автора изображения или конечного пользователя, adduser делает uid чем-то другим, рецепты, подобные этому, сломаются (хост не имеет прямого способа увидеть контейнер /etc/passwd файл, чтобы узнать, какой будет фактический uid).

Чтобы обойти , что , вам, возможно, понадобится такой рецепт:

# may or may not work to get the uid
CONTAINER_UID=$(sudo docker run --rm imagename id -u)
sudo chown -R "$CONTAINER_UID" data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...