Насколько мне известно, люди обычно открывают группу докеров для обычных пользователей, поэтому у них может быть отдельная среда, чтобы делать что угодно без корневого разрешения хоста.
Но если команду docker нужно запускать с помощью sudo
, например sudo docker exec -it CONTAINER / bin / bash
, это хороший способ скрыть информацию, например, исходный код в контейнере?
Мой вопрос, если быть более конкретным, если sudo
необходимо для запуска докера
, можно ли увидеть, что внутри контейнера, или даже получить к нему доступ без прав root?
Нет необходимости запускать Docker от имени root.
В Docker есть режим "rootless", который позволяет запускать контейнеры Docker в пространстве пользователя. Однако у этого режима работы есть некоторые ограничения, перечисленные в документации по ссылке. В этом режиме пользователь имеет полный доступ к контейнерам и их содержимому.
Однако лично у меня нет опыта запуска Docker в режиме rootless.
Если вы хотите запустить Docker как общесистемную службу, то для этого требуется доступ root
или членство в группе docker
. В этом режиме вы можете выполнить следующую команду (как член группы docker
- на примере nginx, и при условии, что bash
находится в контейнере):
docker exec -it nginx /bin/bash
Вы попадаете в терминал контейнера (как root):
root@e209bdb1fe51:/#
Таким образом, даже если вы не являетесь root на локальной машине (но являетесь членом группы docker
), вы будете root внутри контейнера.