Хорошая новость: новый докер (версия 19.03 (в настоящее время экспериментальный)) сможет работать без прав root, что устраняет проблемы, которые могут возникнуть при использовании пользователя root. Больше не нужно возиться с повышенными правами, root и всем, что может открыть вашу машину, когда вы этого не хотите.
Видео об этом из [DockerCon 2019] демона Hardening Docker в режиме Rootless
Несколько предостережений в бездокном режиме Docker
Инженеры Docker говорят, что режим без root не может считаться заменой полного набора функций движка Docker. Некоторые ограничения режима без root включают:
- Элементы управления cgroups, профили безопасности устройства, контрольные точки / восстановление, оверлейные сети и т. д. не работают в режиме без root.
- Экспозиция портов из контейнеров в настоящее время требует ручного вспомогательного процесса socat.
- Только дистрибутивы на основе Ubuntu поддерживают оверлейные файловые системы в режиме без root.
- Режим Rootless в настоящее время предоставляется только для ночных сборок, которые могут быть не такими стабильными, как вы привыкли.
Начиная с докера 19.3 это устарело (и опаснее, чем нужно):
В руководстве по докеру есть что сказать об этом:
Предоставление некорневого доступа
Демон docker всегда запускается от имени пользователя root, и, начиная с версии Docker 0.5.2, демон docker связывается с сокетом Unix вместо порта TCP. По умолчанию этот сокет Unix принадлежит пользователю root, и по умолчанию вы можете получить к нему доступ с помощью sudo.
Начиная с версии 0.5.3, если вы (или ваш установщик Docker) создаете группу Unix с именем docker и добавляете в нее пользователей, то демон docker сделает владение сокетом Unix доступным для чтения / записи для группы docker при запуске демона , Демон docker всегда должен запускаться как пользователь root, но если вы запускаете клиент docker как пользователь в группе docker, вам не нужно добавлять sudo ко всем командам клиента. Начиная с версии 0.9.0, вы можете указать, что группа, отличная от docker, должна иметь сокет Unix с опцией -G.
Предупреждение: группа Docker (или группа, указанная с помощью -G) является корневым эквивалентом; см. подробности Docker Daemon Attack Surface и этот пост в блоге Почему мы не позволяем некорневым пользователям запускать Docker в CentOS, Fedora или RHEL (спасибо michael-n).
В недавнем выпуске экспериментального режима без root на GitHub инженеры упоминают, что режим без root позволяет запускать dockerd от имени непривилегированного пользователя, используя user_namespaces (7), mount_namespaces (7), network_namespaces (7).
Пользователи должны запускать dockerd-rootless.sh вместо dockerd.
$ dockerd-rootless.sh --experimental
Поскольку режим Rootless является экспериментальным, пользователям всегда нужно запускать dockerd-rootless.sh с параметром –experimental.
Важно прочитать: шаги после установки для Linux (он также ссылается на детали Docker Daemon Attack Surface ).
Управление Docker от имени пользователя без полномочий root
Демон docker связывается с сокетом Unix вместо порта TCP. По умолчанию этот сокет Unix принадлежит пользователю root, и другие пользователи могут получить к нему доступ только через sudo. Демон docker всегда запускается от имени пользователя root.
Если вы не хотите использовать sudo при использовании команды docker, создайте группу Unix с именем docker и добавьте в нее пользователей. Когда демон docker запускается, он делает владение сокетом Unix доступным для чтения / записи группой docker.
Добавьте группу докеров, если она еще не существует:
sudo groupadd docker
Добавьте подключенного пользователя «$ USER» в группу Docker. Измените имя пользователя, чтобы оно соответствовало вашему предпочтительному пользователю, если вы не хотите использовать своего текущего пользователя:
sudo gpasswd -a $USER docker
Либо сделайте, newgrp docker
либо выйдите из системы, чтобы активировать изменения в группах.
Вы можете использовать
docker run hello-world
чтобы проверить, можете ли вы запустить Docker без sudo.