Как запустить 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 в unix.
После поиска на странице документации Docker я понял, что демон Docker по умолчанию привязывается к сокету Unix, а не к TCP-порту. Поскольку этот сокет Unix принадлежит пользователю root, демон Docker будет запускаться только от имени пользователя root. Следовательно, обычные пользователи не могут выполнять большинство команд Docker.
Если вы хотите запустить Docker в Linux от имени пользователя без полномочий root, вам необходимо выполнить следующие шаги. Я тестировал это на сервере Ubuntu 18.04, и все работало отлично! Он также должен работать и в других дистрибутивах Linux.
Важное предупреждение:
Запуск Docker от имени обычного пользователя не является хорошей идеей с точки зрения безопасности. Лично я этим не пользуюсь и не рекомендую. Если это ваша личная система и вы не подключаете ее к Интернету, в этом нет ничего страшного. Однако не запускайте Docker в производственной системе от имени пользователя без полномочий root.
Запуск Docker от имени пользователя без полномочий root в Linux
Чтобы исправить ошибку «Отказ в разрешении Docker» и использовать Docker от имени пользователя без полномочий root, создайте группу под названием "docker" с помощью следующей команды:
sudo groupadd docker
Затем добавьте своего пользователя в группу docker:
sudo usermod -aG docker $USER
После добавления пользователя в группу Docker выйдите из системы и войдите снова, чтобы изменения вступили в силу.
Либо выполните следующую команду, чтобы применить изменения к группам:
newgrp docker
Отныне обычный пользователь (не 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 Post