it-roy-ru.com

Как исправить докер: Получен отказ в разрешении проблемы

Я установил Docker на моей машине, где у меня установлена ​​ОС Ubuntu. После чего я установил докер, когда запускаю

Sudo docker run hello-world

Все хорошо, но я хочу скрыть слово Sudo, чтобы сделать команду более короткой.

Если я напишу команду без слова Sudo

docker run hello-world

Это отображает следующее:

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.See 'docker run --help'.

То же самое случилось, когда я пытаюсь сделать

docker-compose up

Как я могу решить это?

49
Carlos Andres

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

  1. Создайте группу докеров.

    $ Sudo groupadd docker
    
  2. Добавьте вашего пользователя в группу Docker.

    $ Sudo usermod -aG docker $USER
    
  3. Выйдите из системы и войдите снова и запустите.

    $ docker run hello-world
    

Взято из докера официальной документации: https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user

64
mkb

После обновления я получил запрещенное разрешение . Выполнение шагов 'mkb' шаги после установки ничего не изменилось, потому что мой пользователь уже был в группе 'docker'; Я повторяю - это дважды в любом случае без успеха.

После часа поиска наконец-то сработало следующее решение:

Sudo chmod 666 /var/run/docker.sock

Решение пришло из Ольшанск .

Похоже, что при обновлении воссоздан сокет без достаточных прав для группы «Докер».

Проблемы: Это сложное chmod открывает дыру в безопасности, и после каждой перезагрузки эта ошибка повторяется снова и снова, и вам приходится каждый раз повторять приведенную выше команду. Я хочу решение раз и навсегда. Для этого у вас есть две проблемы:

1) Проблема с SystemD: сокет будет создан только с владельцем 'root' и группой 'root' . Вы можете проверить эту первую проблему с помощью этой команды: 

ls -l /lib/systemd/system/docker.socket

Если все это хорошо, вы должны увидеть «root/docker», а не «root/root».

2) Проблема с графический вход в систему: https://superuser.com/questions/1348196/why-my-linux-account-only-belongs-to-one-group Вы можете проверить эту вторую проблему с этой командой: 

groups

Если все правильно, вы должны увидеть группу docker в списке . Если нет, попробуйте команду 

Sudo su $USER  -c groups

если вы видите группу docker, то это из-за ошибки.

Решения: Если вам удастся получить обходной путь для графического входа в систему, это должно сделать работу:

Sudo chgrp docker /lib/systemd/system/docker.socket
Sudo chmod g+w /lib/systemd/system/docker.socket

Но если вы не можете справиться с этой ошибкой, неплохое решение может быть следующим:

Sudo chgrp $USER /lib/systemd/system/docker.socket
Sudo chmod g+w /lib/systemd/system/docker.socket

Это работает, потому что вы находитесь в графической среде и, вероятно, единственный пользователь на вашем компьютере . В обоих случаях вам нужна перезагрузка (или Sudo chmod 666 /var/run/docker.sock)

86
Galigator
  1. добавить группу докеров
$ Sudo groupadd docker
  1. добавьте вашего текущего пользователя в группу Docker
$ Sudo usermod -aG docker $USER

3. переключить сеанс в группу докеров

$newgrp - docker
  1. бежать
$docker run hello-world
7
wei.liang
  1. Добавить текущего пользователя в группу docker
Sudo usermod -aG docker $USER
  1. Измените права доступа к сокету Docker, чтобы иметь возможность подключаться к демону Docker /var/run/docker.sock
Sudo chmod 666 /var/run/docker.sock
7
aabdulwahed

используйте эту команду

Sudo usermod -aG docker $USER

затем перезагрузите компьютер, это сработало для меня.

2
Sheetala Prasad Tiwari

Чтобы устранить эту проблему, я искал, где установлены мои докер и docker-compose. В моем случае docker был установлен в /usr/bin/docker, а docker-compose был установлен в пути /usr/local/bin/docker-compose. Затем я пишу это в моем терминале:

Докеру:

Sudo chmod +x /usr/bin/docker

docker-compose:

Sudo chmod +x /usr/local/bin/docker-compose

Теперь мне не нужно писать в моих командах Docker Word Sudo

/ ************************************************* ********************** /

Errata:

Лучшее решение этой проблемы прокомментировал @mkasberg. Я цитирую комментарий:

That might work, you might run into issues down the road. Also, it's a security vulnerability. You'd be better off just adding yourself to the docker group, as the docs say. Sudo groupadd docker, Sudo usermod -aG docker $USER.Docs:https://docs.docker.com/install/linux/linux-postinstall/

Большое спасибо!

0
Carlos Andres

lightdm и kwallet отправляются с ошибкой, которая, по-видимому, не проходит дополнительные группы при входе в систему. Чтобы решить эту проблему, я также, кроме Sudo usermod -aG docker $USER, должен был закомментировать

auth optional pam_kwallet.so
auth optional pam_kwallet5.so

в

#auth optional pam_kwallet.so
#auth optional pam_kwallet5.so

в /etc/pam.d/lightdmперед перезагрузкой, чтобы группа Docker действительно имела эффект.

ошибка: https://bugs.launchpad.net/lightdm/+bug/1781418 и здесь: https://bugzilla.redhat.com/show_bug.cgi?id=1581495

0
Herbert