Исправлено: не удается подключиться к демону Docker.



Попробуйте наш инструмент устранения неполадок

Вы можете быть очень сбиты с толку, если терминал Linux выдает вам ошибку «не удается подключиться к демону Docker», потому что, скорее всего, демон Docker уже запущен, когда вы это видите. Хотя вы захотите убедиться, что это так, вы, вероятно, будете озадачены, когда обнаружите, что эта ошибка даже не связана с тем, что служба не запускается. В основном его бросают пользователям, которые еще не добавили себя в группу Docker.



Docker создает отдельную группу пользователей в системах Linux, и те, у кого есть учетные записи пользователей, которые не добавлены в нее, не смогут подключиться к ней. Имейте в виду, что добавление учетной записи пользователя в группу Docker функционально эквивалентно корневому, поскольку демон всегда работает от имени пользователя root. Этого можно ожидать в однопользовательской системе Ubuntu Server, но, безусловно, следует помнить об этом тем, кто использует Docker в Arch, Fedora или Debian.



Метод 1. Проверка статуса службы Docker

Хотя это почти наверняка, вам нужно будет проверить, запущена ли служба Docker в данный момент. В окне терминала запустите systemctl статус docker.service как обычный пользователь. Вы должны получить некоторую информацию о том, какой номер PID назначен демону Docker. Если вы этого не сделаете, вам нужно будет перезапустить службу.



Если вы перезапустили его, попробуйте сделать то, что вызвало ошибку «не удается подключиться к демону Docker». Если теперь это работает, значит, у вас просто не было запущенной службы, и вам действительно не нужно беспокоиться ни о чем, кроме причины, по которой она не работает. К сожалению, в большинстве случаев это не работает, поэтому в таких ситуациях вам придется действовать дальше.

Метод 2: добавление пользователей в группу Docker

Бежать информация о докере из командной строки, которая обычно снова выдает ошибку «не удается подключиться к демону Docker».

В этом случае вам нужно будет запустить sudo groupadd docker; sudo usermod -aG docker $ USER чтобы добавить себя в нужную группу. Если это даст ошибку, потому что у вас нет usermod, вы можете изменить команду, чтобы она запускалась как sudo groupadd docker; sudo gpasswd -a $ USER докер , но обычно это не должно быть проблемой, потому что большинство коммерческих дистрибутивов Linux работают с одним и тем же набором инструментов. В любом случае бегите докер newgrp так что вы можете войти в новую группу докеров, если вы еще этого не сделали.



Имейте в виду, что при этом всегда будет добавляться пользователь, под которым вы в настоящее время вошли в систему, что не должно стать большой проблемой для систем большинства людей, у которых нет нескольких учетных записей, кроме одного пользователя и учетной записи root. Поскольку на данный момент у вас есть административный доступ, запустите sudo chgrp docker / usr / bin docker; sudo chgrp docker /var/run/docker.sock чтобы исправить разрешения для сокета докера и команды. Обычно файл сокета принадлежит только пользователю root, поэтому это исправит.

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

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

Метод 3: использование списков управления доступом для изменения метаданных Docker

Если вы не хотите принадлежать к группе, которая делает вас похожим на пользователя root, вы можете настроить файл сокета для работы только с определенными разрешениями. Вы можете проигнорировать процесс gpasswd, если хотите сделать это таким образом. Необходимость сканировать файловую систему на предмет различных записей ACL обременительна для тех, кто проводит аудит безопасности, но это избавляет вас от необходимости полностью использовать группу докеров.

Если вы хотите сделать это таким образом, вы можете запустить sudo setfacl -m пользователь: имя: rw /var/run/docker.sock при замене имени пользователя и имени соответствующими метками. Это дает разрешение на доступ к сокету Docker в /var/run/docker.sock, который должен работать с Debian и Ubuntu Server.

3 минуты на чтение