Я установил 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
Как я могу решить это?
docker
docker-compose
Карлос Андрес
источник
источник
Ответы:
Если вы хотите запустить docker от имени пользователя без полномочий root, вам нужно добавить его в группу Docker.
Взято из официальной документации докера: manage-docker-as-a-non-root-user
источник
sudo systemctl restart docker
docker
группе, по сути, предоставляет root-права без применения регулярных политик sudo и аудита. Смотрите GitHub выпуск # 9976 для деталей и обсуждения.После обновления я получил отказано в разрешении. Выполнение шагов после установки 'mkb' ничего не меняет, потому что мой пользователь уже был в группе 'docker'; Я повторяю это дважды, но безуспешно.
После часа поиска наконец-то сработало следующее решение:
Решение пришло из Ольшанска .
Похоже, что при обновлении воссоздается сокет без достаточных разрешений для группы «Докер».
Проблемы
Этот жесткий chmod открывает дыру в безопасности и после каждой перезагрузки эта ошибка запускается снова и снова, и вам приходится каждый раз повторять вышеуказанную команду. Я хочу решение раз и навсегда. Для этого у вас есть две проблемы:
1) Проблема с
SystemD
: сокет будет создан только с владельцем 'root' и группой 'root'.Вы можете проверить эту первую проблему с этой командой:
Если все это хорошо, вы должны увидеть
root/docker
«неroot/root
».2) Проблема с графическим логином : /superuser/1348196/why-my-linux-account-only-belongs-to-one-group
Вы можете проверить эту вторую проблему с этой командой:
Если все правильно, вы должны увидеть группу Docker в списке. Если нет, попробуйте команду
если вы видите, то группа Docker это из-за ошибки.
Решения
Если вам удастся получить обходной путь для графического входа в систему, это должно сделать работу:
Но если вы не можете справиться с этой ошибкой, неплохое решение может быть следующим:
Это работает, потому что вы находитесь в графической среде и, вероятно, единственный пользователь на вашем компьютере. В обоих случаях вам нужна перезагрузка (или
sudo chmod 666 /var/run/docker.sock
)источник
:ro
конца ... как только я добавил, что мнеисточник
newgrp
запросила пароль и не приняла мой пароль пользователя. Вместо этогоsu - $USER
работал, чтобы избежать выхода из системы.docker
группу/var/run/docker.sock
источник
Я решаю эту ошибку с помощью команды:
источник
Вы всегда можете попробовать
Manage Docker as a non-root user
параграф в https://docs.docker.com/install/linux/linux-postinstall/ документах.После этого также, если проблема не устранена, вы можете выполнить следующую команду для ее решения:
источник
chmod 666
), является катастрофой безопасности ... Это никогда не следует рекомендовать.Это исправит мою проблему.
источник
Чтобы устранить эту проблему, я искал, где установлены мои докер и docker-compose. В моем случае
docker
был установлен в/usr/bin/docker
иdocker-compose
был установлен в/usr/local/bin/docker-compose
пути. Затем я пишу это в моем терминале:Докеру:
Кому
docker-compose
:Теперь мне не нужно писать в моих командах Docker слово
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/Большое спасибо!
источник
docker
группу, как говорят доктора.sudo groupadd docker
,sudo usermod -aG docker $USER
.lightdm и kwallet отправляются с ошибкой, которая, по-видимому, не проходит дополнительные группы при входе в систему. Чтобы решить это, я также
sudo usermod -aG docker $USER
должен был закомментироватьв
в
/etc/pam.d/lightdm
перед перезагрузкой , для Докер-группы на самом деле имеют эффект.ошибка: https://bugs.launchpad.net/lightdm/+bug/1781418 и здесь: https://bugzilla.redhat.com/show_bug.cgi?id=1581495
источник
используйте эту команду
затем перезагрузите компьютер, это сработало для меня.
источник
Серьезно, ребята. Не добавляйте Docker в свои группы и не изменяйте posix-сокеты (без ужесточения SELinux), это простой способ создания корневых привилегий. Просто добавьте псевдоним в ваш .bashrc, он проще и безопаснее: alias dc = 'sudo docker'.
источник
Вы можете выполнить следующие шаги, и это будет работать для вас:
sudo groupadd docker
sudo usermod -aG docker $USER
groups
newgrp docker
sudo chown root:docker /var/run/docker.sock
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
После этого теста вы можете запустить
docker ps -a
источник
chown
файле docker.sock.После того, как вы установили Docker, создали группу 'Docker' и добавили в нее пользователя, отредактируйте файл модуля обслуживания Docker:
Добавьте две строки в раздел [Сервис]:
Сохраните файл (Ctrl-X, y, Enter)
Запустите и включите сервис Docker:
источник
После установки докера на Centos. При выполнении команды ниже, я получил ошибку ниже.
Изменить группу и разрешение для docker.socket
Проверьте, используя приведенную ниже команду docker
источник
sudo chmod 666 /var/run/docker.sock
это помогло мне, когда я получал сообщение об ошибке даже при входе в докер, но теперь это прекрасно работает в моей системе.
источник