Команда Docker не может подключиться к демону Docker

Я хочу сделать переход к Docker, так что я только начал с ним обходиться. Я установил Docker на установку VirtualBox Ubuntu 15.10 (Wily Werewolf) и предложил здесь Затем я попытался запустить базовый nginx Изображение докеры:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Итак, я проверил, работает ли Docker:

$ sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
     Docs: https://docs.docker.com
 Main PID: 7542 (docker)
   CGroup: /system.slice/docker.service
           └─7542 /usr/bin/docker daemon -H fd://

nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

Это говорит о том, что демон Docker на самом деле уже запущен, но я уверен, что я только что начал демон Docker вручную:

$ sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock           
INFO[0000] [graphdriver] using prior storage driver "aufs" 
INFO[0000] Firewalld running: false                     
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address 
WARN[0000] Your kernel does not support swap memory limit. 
INFO[0000] Loading containers: start.                   

INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0

Затем я попытался запустить изображение снова, но с тем же результатом:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Я попытался выполнить команду, но безуспешно. Что я здесь делаю неправильно?

Ответ 1

Вам необходимо добавить текущего пользователя в группу Docker следующим образом:

sudo usermod -aG docker $(whoami)

затем выйдите и снова войдите в систему или перезапустите систему. тест по docker version

Для получения дополнительной информации о том, как установить Docker-Engine, следуйте документации Docker.

Ответ 2

Добавьте пользователя в группу докеров

  • Добавьте группу докеров, если она еще не существует:

    sudo groupadd docker

  • Добавьте подключенного пользователя "$ {USER}" в группу докеров:

    sudo gpasswd -a ${USER} docker

  • Перезапустите демон Docker:

    sudo service docker restart

  • Либо выполните newgrp docker, либо выполните вход/выход, чтобы активировать изменения группы.

Ответ 3

Обычно следующая команда выполняет трюк:

sudo service docker restart

Это вместо docker start для случаев, когда Docker уже работает.

Если это работает тогда, как было предложено и в другом ответе, и в этой проблеме GitHub, если вы не добавили себя в группу докеров, выполните ее, выполнив:

sudo usermod -aG docker <your-username> 

И вы, скорее всего, захотите пойти.


Как и в случае с кем-либо другим, в некоторых докере OS не запускается сразу после его установки, и в результате появляется тот же самый can't connect to daemon message. В этом случае вы можете сначала проверить, что Docker действительно не работает, проверяя статус вашей докерной службы, выполнив:

sudo service docker status

Если результат выглядит примерно так: docker stop/waiting вместо docker start/running, process 15378, то это означает, что Docker неактивен. В этом случае убедитесь, что вы запустите его с помощью:

sudo service docker start

И, как и прежде, вам, скорее всего, будет хорошо идти.

Ответ 4

note to self: я получаю сообщение об ошибке из названия вопроса, когда забываю запустить команду docker с sudo:

sudo docker run ...

[Ubuntu 15.10]

Ответ 5

Если бы та же проблема и что сработало для меня:
Проверка права собственности на /var/run/docker.sock

ls -l /var/run/docker.sock

Если вы не являетесь владельцем, измените право собственности на команду

sudo chown *your-username* /var/run/docker.sock

Затем вы можете продолжить выполнение команд docker без проблем: D

Ответ 6

После установки всего и запустите службу, попробуйте закрыть терминал и снова откройте его, затем попробуйте потянуть изображение

Изменить

У меня также была проблема с , если вышеприведенное решение не сработает, попробуйте это решение, приведенное ниже.

sudo mv /var/lib/docker/network/files/ /tmp/dn-bak

Вопросы

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

tail -5f /var/log/upstart/docker.log

Если вывод имеет что-то вроде этого

FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints 
/var/run/docker.sock is up

У вас действительно проблемы с сетью, однако я еще не знаю, если в следующий раз, когда вы перезапустите ( обновить, еще 2 месяца больше не проблема), ваша ОС получит это проблема снова, и если это ошибка или проблема установки

Моя версия докеров

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

Ответ 7

После установки docker на Ubuntu я выполнил следующую команду:

sudo service docker start

Вы пробовали?

Ответ 8

У меня была та же проблема. Борьба в течение двух дней, чтобы решить эту проблему.

Он работал только тогда, когда я это делал:

  • Согласно Docker Tutorial, вам нужно добавить ключ Docker, если он еще не добавлен, используя:

    $ sudo wget -qO- https://get.docker.com/gpg | sudo apt-key add -

  • Затем убедитесь, что вы предоставили привилегии докеров себе, используя:

    $ sudo usermod -aG docker $USER

Надеюсь, это тоже поможет.

Ответ 9

введите как root (sudo su) и попробуйте следующее:

unset DOCKER_HOST
docker run --name mynginx1 -P -d nginx

У меня такая же проблема, и команда docker работает только с правами root, а также с этим DOCKER_HOST empty

PS: также будьте осторожны, что правильный и официальный способ установки на Ubuntu - использовать свои apt-репозитории (даже на 15.10), не с, что " wget" вещь.

Ответ 10

Для OSX:

После открытия докера и запуска машины "по умолчанию" через терминал быстрого запуска (https://docs.docker.com/engine/installation/mac/) вы пытаетесь выполнить команды докеров и получить это" не может подключиться к сообщению docker daemon, , вам нужно установить некоторые переменные env:

eval "$(docker-machine env default)"

Затем попробуйте docker run hello-world, чтобы увидеть, все ли персик.

Ответ 11

Для тех, кто уже попробовал перезагрузить ваш компьютер, отключив переменную окружения DOCKER_HOST, как указано в документации docker env, и все остальное просто попробуйте пойти с

sudo service docker restart

Только это помогло мне даже после перезагрузки машины.

Ответ 12

Предоставление доступа без полномочий root - от docker

Добавьте группу докеров, если она еще не существует.

$ sudo groupadd docker

Добавьте подключенного пользователя "$ {USER}" в группу докеров.

Измените имя пользователя в соответствии с вашим предпочтительным пользователем.

Вам может потребоваться выйти и снова войти в систему для это вступит в силу.

$ sudo gpasswd -a ${USER} docker

Перезапустите демон Docker.

$ sudo service docker restart

Ответ 13

Этот вопрос в настоящее время номер 3 в поиске Google. Проведя некоторые исследования по решению этой проблемы в моей системе Linux, я подумал, что напишу этот ответ. В исходном сообщении говорится, что проблема связана с Ubuntu, но я также столкнулся с проблемой использования Fedora. Имея это в виду, вот что я сделал, чтобы решить проблему.

В Fedora 22

Установка докера:

$> curl -fsSL https://get.docker.com/ | sh

После установки Docker:

Пользователь должен быть добавлен в группу докеров.

$> sudo usermod -aG docker

Необходимо запустить демон docker

$> sudo service docker start

Вы можете установить запуск демона при загрузке

$> sudo chkconfig docker on

Вы можете проверить, работает ли служба докеров

$> service docker status

И последняя окончательная проверка

$> docker run hello-world

Ответ 14

Попробуйте использовать "sudo" с помощью команды, которую вы используете.

Ответ 15

У меня такая же проблема во время работы docker.

вы можете запускать команды как sudo:

sudo docker ***your command here***

Ответ 16

Для Ubuntu:
Случилось со мной, когда я обновил докер.
Вам нужно разобрать службу и сокет, а затем перезапустить службу.

После меня работали:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

Что происходит за кулисами
systemd также имеет возможность пометить блок как полностью нестандартный, автоматически или вручную, связав его с /dev/null. Это называется маскировкой блока и возможно с помощью команды mask.

sudo systemctl mask docker.service

Вы можете проверить список маскированных служб, используя:

sudo systemctl list-unit-files

Выход sudo systemctl list-unit-files

Чтобы включить автоматический/ручной запуск службы, вам необходимо разобрать его, используя:

sudo sytemctl unmask docker.service

Теперь служба будет включена, как показано ниже введите описание изображения здесь

Ответ 17

Поскольку докер связывается с unix-сокетом, который принадлежит root при запуске, использование sudo вместе с командами docker будет работать.

Ответ 18

  • У меня тоже была такая же проблема. Проблема была в сокетах, выделенных для docker-daemon и docker-client.
  • Сначала разрешение для docker-client на docker.sock не было установлено. Вы можете установить его с помощью "sudo usermod -aG docker $USER"
  • Затем проверьте файл bash, в котором работает docker-client, для меня это было на 0.0.0.0:2375, тогда как docker-daemon запускался в unix-сокете (он был установлен в файле конфигурации dockerd).
  • Просто прокомментируйте строку bash, и она будет работать нормально.
  • Но если вы хотите, чтобы он работал на TCP-порт вместо unix-сокета, измените файл конфигурации dockerd и установите его на 0.0.0.0.2375 и сохраните строку в bash, как она есть, если она присутствует или установлена до 0.0.0.0:2375.

Ответ 19

Протестировано в Ubuntu 16.04

# Create the docker group and add your user to the docker group
groupadd docker
usermod -aG docker $USER
newgrp docker

# Configure docker service to be exposed
mkdir -p /etc/systemd/system/docker.service.d
echo -e '[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376' >> /etc/systemd/system/docker.service.d/override.conf

# restart service
systemctl daemon-reload
service docker restart

Ответ 20

Я столкнулся с такой же ошибкой в ​​экземпляре Amazon EC2. Проблема была исправлена ​​после перезапуска экземпляра.

Ответ 21

Добавить текущего пользователя в группу докеров:

sudo usermod -aG docker $(whoami)

Ответ 22

Для Ubuntu 16.04

Внутри файла /lib/systemd/system/docker.service изменить:

ExecStart=/usr/bin/dockerd fd://

с:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375

Внутри файла /etc/init.d/docker изменить:

DOCKER_OPTS=

с:

DOCKER_OPTS="-H tcp://0.0.0.0:2375"

а затем перезагрузите компьютер.

Ответ 23

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

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

unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

У меня была ранее установленная докерская установка, и после перезагрузки моего ноутбука он просто отказывался работать. Был правильно добавлен в группу пользователей докера, имел правильные права доступа к сокету и т.д., Но все еще не мог запустить docker login docker run... и т.д. Это исправило это для меня. К сожалению, я должен запускать это при каждой перезагрузке. Это упоминается для нескольких проблем с github также в качестве обходного пути, хотя кажется, что это постоянный барьер на пути корректной работы Docker (похоже, ошибка) (примечание: я работаю в Arch Linux, а не в OSX, но это была та же проблема для мне).