Docker удаляет пользователя root из образа во время сборки - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть простой Dockerfile , основанный на debian

FROM debian

USER 1001

Я создаю его

docker build -t no-root:1 .

Я запускаю его

docker run --name test -it no-root:1

Теперь у меня есть некорневая оболочка

I have no name!@2ac786ca2265:/$

Но я могу exec в контейнер из другой оболочки с

docker exec -it --user 0 test bash

И яполучить root shell

root@e043edec4585:/#

и запустить root команды ...

Возможно ли удалить root пользователь из системы во время сборки, поэтому docker exec -it --user 0 test bash потерпит неудачу?

Я попытался удалить строку root из /etc/passwd и /etc/group.Это не помогло.Я могу docker exec -it --user 0 test bash in.

Итак, есть ли способ?

1 Ответ

0 голосов
/ 21 ноября 2018

Что ж, достаточно просто сменить пользователя, что-то вроде приведенного ниже примера, который я ущипнул с другого сайта.

RUN useradd -c 'Node.js user' -m -d /home/node -s /bin/bash node
RUN chown -R node.node /src
USER node
ENV HOME /home/node

Я не рекомендую пытаться удалить пользователя root.Вышеприведенное должно остановить использование root на docker exec.

. Альтернативой является создание .profile в домашнем каталоге пользователя root, который вместо этого входит в систему под другим пользователем, но это повлияет только на использование exec.где вы работаете -it {container} bash (он же, интерактивная оболочка)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...