Как запустить Docker от имени пользователя без прав root в Linux

Установить Docker в Ubuntu очень просто! Любой пользователь, даже новичок, может установить его за 15 минут. После установки Docker мы заметили, что не могли выполнять большинство операций с Docker как обычный пользователь. Нам приходилось запускать Docker либо от имени пользователя «root
«, либо с правами «sudo
«. Всякий раз, когда я пытался запустить Docker от имени пользователя без прав root или без прав sudo, мы получаем следующую ошибку:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied
Например, мы хотели проверить версию Docker как обычный пользователь с помощью команды:
docker version
И мы получаем такое сообщение об ошибке:
Client: Docker Engine - Community Version: 19.03.8 API version: 1.40 Go version: go1.12.17 Git commit: afacb8b7f0 Built: Wed Mar 11 01:25:46 2020 OS/Arch: linux/amd64 Experimental: false Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied
Но когда мы запускаем ту же команду с правами sudo,
sudo docker version
Он отображает все сведения о текущей версии Docker, как показано в выводе ниже.
Client: Docker Engine - Community Version: 19.03.8 API version: 1.40 Go version: go1.12.17 Git commit: afacb8b7f0 Built: Wed Mar 11 01:25:46 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.8 API version: 1.40 (minimum version 1.12) Go version: go1.12.17 Git commit: afacb8b7f0 Built: Wed Mar 11 01:24:19 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683
Изучив страницу с документацией Docker, мы поняли, что по умолчанию демон Docker привязывается к сокету Unix, а не к TCP-порту. Поскольку сокет Unix принадлежит пользователю root, демон Docker будет работать только от имени пользователя root. Следовательно, обычные пользователи не могут выполнять большинство команд Docker.
Если вы хотите запустить Docker от имени пользователя без прав root в Linux, выполните следующие действия. Мы протестировали это на сервере Ubuntu 18.04, и всё сработало как надо! Это должно работать и в других дистрибутивах Linux.
Запуск Docker от имени пользователя без прав root в Linux
Чтобы устранить ошибку «permission denied» в Docker и использовать Docker от имени пользователя без прав root, создайте группу «docker» с помощью следующей команды:
sudo groupadd docker
Затем добавьте своего пользователя в группу docker:
sudo usermod -aG docker $USER
После добавления пользователя в группу Docker выйдите из системы и войдите снова, чтобы изменения вступили в силу.
Либо выполните следующую команду, чтобы применить изменения к группам:
docker newgrp
С этого момента обычный пользователь (не root) может использовать Docker без прав sudo.
Давайте мы выполним следующие команды как обычный пользователь:
docker version
docker run hello-world
Пример вывода:

Запуск Docker от имени пользователя без прав root в Linux
Видите? Теперь я могу запускать обе эти команды Docker без прав sudo.
На всякий случай: если вы уже выполнили несколько команд Docker с правами sudo, прежде чем добавить своего пользователя в группу Docker, вы, скорее всего, увидите ошибку, подобную приведённой ниже.
WARNING: Error loading config file: /home/user/.docker/config.json - stat /home/user/.docker/config.json: permission denied
Приведённое выше сообщение об ошибке указывает на то, что ваш каталог ~/.docker/
был создан с неправильными разрешениями из-за команд ‘sudo
‘.
Чтобы решить эту проблему, измените владельца и права доступа к этому каталогу с помощью следующих команд:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
Чтобы изменения вступили в силу, выйдите из системы и войдите снова.
Если это не помогло решить проблему, возможно, вам придётся удалить каталог ~/.docker/
. Он будет создан автоматически, но вы потеряете все пользовательские настройки, если они были.
Пост сделан на основании статьи: Примечания по установке Docker
Редактор: AndreyEx