Linux

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

Содержание:

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

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

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

Что вызывает Ошибка: Cannot Connect to the Docker Daemon?

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

  • Демон Docker не является запуск.
  • Docker не shutdown cleanly.
  • Отсутствие привилегии root запустить службу docker.

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

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

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

Команда Systemctl пришла на замену старой системе инициализации SysV, и она управляет службами systemd работает на Linux-системах. Если у вас нет systemctl в вашей системе, don’t worry; use the сервис команда, как описано ниже.

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

  1. Открыть терминал и выполнить первую команду – размаскировать docker.
sudo systemctl unmask docker

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

2. Как только блок docker будет unmasked, мы можем start the docker демон с помощью команды systemctl. Сайт docker демон управляет объектами docker, такими как образы, контейнеры и запросы Docker API. Выполните приведенную ниже команду в командной строке.

systemctl start docker
Запустите службу Docker
Запуск службы Docker

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

systemctl status docker
Состояние службы Docker
Состояние службы Docker

Из приведенного выше изображения видно, что докер активен и запущен.

Решение 2: Очистите ‘неудачный Docker Pull’ и запустите службу Docker

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

  1. Запустить Терминал и выполните команду команды ниже:
systemctl unmask docker.сервис
systemctl unmask docker.socket
systemctl start docker.служба
Запуск службы 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
service docker start
Перезапустите службу docker
Перезапустить службу docker

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

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

  1. Открыть Терминал и запустить dockerd выполнив приведенную ниже команду:
sudo dockerd
Запустите dockerd
Запустить dockerd

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

Если вы используете SysV init system, тогда команда systemctl не будет работать для вас. Нам потребуется использовать команда службы на start docker daemon.

  1. запустите Терминал и выполнить команды, приведенные ниже:
sudo service --status-all
sudo service docker start
Запустите службу Docker
Запустите службу Docker

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

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

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

  1. Откройте терминал и выполните следующую команду запустить Docker.
sudo snap start docker
Запустить Docker
Запустить Docker

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

sudo snap services

Это позволит list все запущено snap services.

Запуск службы Snap Services
Snap Services

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

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

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

Решение 6: Запуск Docker для пользователей без Root Privileges

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

  1. Откройте Терминал и выполните приведенную ниже команду:
export DOCKER_HOST=tcp://localhost:2375
Экспорт DockerHost
Экспорт Docker Host

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

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

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