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

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

 

Читать  Как исправить ошибку «dpkg-deb: lzma error: compressed data is corrupt» в Debian 12 и Ubuntu Linux

Изучив страницу с документацией Docker, мы поняли, что по умолчанию демон Docker привязывается к сокету Unix, а не к TCP-порту. Поскольку сокет Unix принадлежит пользователю root, демон Docker будет работать только от имени пользователя root. Следовательно, обычные пользователи не могут выполнять большинство команд Docker.

Если вы хотите запустить Docker от имени пользователя без прав root в Linux, выполните следующие действия. Мы протестировали это на сервере Ubuntu 18.04, и всё сработало как надо! Это должно работать и в других дистрибутивах Linux.

 

Запуск Docker от имени обычного пользователя небезопасен. Лично мы этим не пользуемся и не рекомендуем другим. Если это ваша личная система и вы не подключаете её к интернету, то ничего страшного. Однако не запускайте Docker от имени пользователя без прав root в рабочей системе.

 

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

Чтобы устранить ошибку «permission denied» в Docker и использовать Docker от имени пользователя без прав root, создайте группу «docker» с помощью следующей команды:

sudo groupadd docker

 

Затем добавьте своего пользователя в группу docker:

sudo usermod -aG docker $USER

 

После добавления пользователя в группу Docker выйдите из системы и войдите снова, чтобы изменения вступили в силу.

Либо выполните следующую команду, чтобы применить изменения к группам:

docker newgrp

 

Читать  Red Hat OpenShift против Kubernetes: ключевые отличия

С этого момента обычный пользователь (не root) может использовать Docker без прав sudo.

Давайте мы выполним следующие команды как обычный пользователь:

docker version
docker run hello-world

 

Пример вывода:

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

Запуск 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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала