[FIX] Не удается подключиться к демону Docker по адресу unix: ///var/run/docker.sock

Docker становится все более популярным благодаря своей способности легко создавать, развертывать и запускать приложения с использованием контейнеров. Контейнеры позволяют разработчикам упаковать приложение со всеми его библиотеками и зависимостями перед его развертыванием в виде одного полного пакета. Установить Docker в Linux относительно просто. Все, что вам нужно сделать, это запустить пару команд в Терминале, и все готово.

Ошибка подключения докера

Ошибка подключения докера

Однако это может быть не одинаково для всех пользователей даже после успешной установки. Одна из наиболее частых возникающих ошибок: не удается подключиться к демону Docker в (unix: ///var/run/docker.sock. Работает ли демон docker?) Эта ошибка может возникнуть при выполнении различных команд докеров, таких как docker run, информация о докере, вытягивание докера, остановка докера и т. д.

Что вызывает ошибку: не удается подключиться к демону Docker?

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

  • Демон Docker не запущен.
  • Докер не завершает работу чисто.
  • Отсутствие root-прав для запуска службы докеров.

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

Решение 1. Запустите службу Docker с помощью systemctl

Если вы только что завершили новую установку Docker на Ubuntu или перезагрузили компьютер, высока вероятность того, что служба Docker не запущена. Docker daemon (dockerd) — системная служба для Docker. Эта служба обрабатывает различные объекты Docker, такие как изображения, контейнеры, сети и тома, и слушает запросы Docker API.

Команда Systemctl пришла на смену старой системе инициализации SysV и управляет службами systemd, работающими в системах Linux. Если в вашей системе нет systemctl, не волнуйтесь; используйте служебную команду, как описано ниже.

Примечание. Этот метод работает только для пользователей, которые установили Docker с помощью диспетчера пакетов APT. Если вы установили Docker через SNAP, см. Решение 5 ниже.

  1. Откройте Терминал и выполните первую команду — демаскировать докер.

sudo systemctl демаскировать докер

Если мы попытаемся запустить службу докеров, когда докер замаскирован, мы можем столкнуться с ошибкой «Не удалось запустить docker.service: модуль замаскирован». Маску можно считать более надежным вариантом отключения. Когда файл модуля замаскирован, модуль связывается с dev / null. Вы можете просмотреть состояние всех файлов модуля с помощью команды — ‘$ systemctl list-unit-files’

2. После того, как модуль докера разоблачен, мы можем запустить демон докера с помощью команды systemctl. Демон докера управляет такими объектами докеров, как изображения, контейнеры и запросы Docker API. Выполните приведенную ниже команду в командной строке.

systemctl запустить докерЗапустить службу DockerЗапустить службу Docker

3. Проверить, активна ли и работает ли служба докеров. Мы будем использовать команду systemctl status, которая показывает текущий статус конкретной службы. Выполните приведенную ниже команду на своем Терминале.

Докер состояния systemctlСтатус службы DockerСтатус службы Docker

На изображении выше мы видим, что докер активен и работает.

Решение 2. Удалите ошибку при извлечении Docker и запустите службу Docker.

Бывают случаи, когда вы можете неожиданно закрыть Docker при извлечении контейнера. Такие ситуации будут маскировать файлы docker.service и docker .socket. Docker.socket — это файл, расположенный в ‘/var/run/docker.sock’ и используемый для связи с демоном Docker. Нам нужно будет демаскировать файлы, состоящие из двух модулей — docker .service и docker.daemon, прежде чем приступить к запуску docker.

  1. Запустите Терминал и выполните следующие команды:

systemctl unmask docker.service systemctl unmask docker.socket systemctl start docker.serviceЗапустить службу DockerЗапустить службу Docker

Если вы все еще испытываете ошибку даже после выполнения приведенных ниже команд, нам нужно будет удалить файлы в каталоге Containerd перед повторным запуском Docker. Containerd — это функция, представленная в Docker 1.11, которая используется для управления жизненным циклом образов Docker.

2. Откройте Терминал и выполните приведенные ниже команды. Убедитесь, что вы знаете пароль root, поскольку нам потребуются повышенные привилегии для выполнения команд.

sudo su service docker stop cd / var / run / docker / libcontainerd rm -rf containerd / * rm -f docker-containerd.pid запуск докера службыПерезапустить службу докеровПерезапустить службу докеров

Решение 3. Запустите службу Dockerd (Docker Daemon)

Dockerd — это демон Docker, который слушает API-интерфейсы Docker и управляет различными объектами Docker. Dockerd можно использовать как альтернативу команде $ systemctl start docker, которая также используется для запуска демона Docker.

  1. Откройте Терминал и запустите dockerd, выполнив следующую команду:

sudo dockerdЗапустить dockerdЗапустить dockerd

Решение 4. Запустите Docker с помощью команды Service

Если вы используете систему инициализации SysV, то команда systemctl вам не подойдет. Нам нужно будет использовать служебную команду для запуска демона докера.

  1. запустите Терминал и выполните следующие команды:

sudo service —status-all sudo service docker startЗапустить службу DockerЗапустить службу Docker

Решение 5. Запустите службу Docker с помощью Snap

Если вы установили Docker с помощью диспетчера пакетов Snap, вам нужно будет использовать команду snap для управления демоном docker.

Как правило, Snap автоматически управляет своими услугами. Однако в таких ситуациях, как эта ошибка, потребуется ручное вмешательство. Некоторые из аргументов, которые вы можете использовать с командой snap, включают остановку, запуск и перезапуск. В нашем случае мы будем использовать параметр start.

  1. Откройте Терминал и выполните команду ниже, чтобы запустить Docker.

sudo snap start dockerЗапустить DockerЗапустить Docker

2. Выполните команду ниже, чтобы проверить, была ли запущена служба Docker.

службы sudo snap

Это перечислит все запущенные службы привязки.

Сервисы SnapСервисы Snap

Если приведенные выше команды не работают для вас, попробуйте подключить разъем docker: home, так как по умолчанию он не подключается автоматически. После этого запустите службу Docker.

3. Запустите Терминал и выполните следующие команды:

sudo snap connect docker: home: home sudo snap start dockerЗапустить DockerЗапустить Docker

Решение 6. Запустите Docker для пользователей без привилегий root

Ошибка также может возникать из-за отсутствия повышенных привилегий и у пользователя нет доступа к ‘unix: ///var/run/docker.sock.’ К счастью, есть обходной путь. Мы экспортируем переменную Docker Host на localhost через порт 2375.

  1. Откройте Терминал и выполните команду ниже:

экспорт DOCKER_HOST = tcp: // localhost: 2375Экспорт DockerHostЭкспорт хоста Docker

Решение 7. Переустановите Docker

Если указанные выше решения не устраняют ошибку, высока вероятность того, что у вас могут быть ошибки установки. Чтобы правильно установить Docker в вашей системе Linux, следуйте инструкциям из Официальный сайт Docker.

Похожие записи

Добавить комментарий

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