Поиск по сайту:

Как запустить 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

Статьи по данной тематике