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

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

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

поэтому я проверил, работает ли Докер:

$ 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?

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

23 ответов


вам нужно добавить текущего пользователя [предположим, вы вошли в систему как ubuntu] в группу docker следующим образом

sudo usermod -aG docker $(whoami)

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

для получения дополнительной информации, как установить docker-engine следуйте документация docker


Добавить пользователя в группу docker

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

    sudo groupadd docker

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

    sudo gpasswd -a ${USER} docker

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

    sudo service docker restart

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


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

sudo service docker restart

, вместо docker start для случаев, когда Докер, кажется, уже запущена.

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

sudo usermod -aG docker <your-username> 

и вы, скорее всего, хорошо идти.


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

sudo service docker status

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

sudo service docker start

и, как и раньше, вы, скорее всего, будете хорошо идти.


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

sudo docker run ...

[Ubuntu 15.10]


имел ту же проблему, и то, что сработало для меня, было:
Проверка владения /var/run / docker.носок!--4-->

ls -l /var/run/docker.sock

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

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

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


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

редактировать

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

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

соображения

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

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 месяца не проблема снова) ваш OS снова эта проблема, и если это ошибка или проблема установки

моя версия docker

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

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

sudo service docker start

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


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

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

  1. по данным настройки все!--10-->, вам нужно добавить ключ Докера, если он еще не добавлен с помощью:

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

  2. затем убедитесь, что вы предоставляете себе права docker с помощью:

    $ sudo usermod -aG docker $USER

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


войти как root (sudo su) и попробуйте это:

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

у меня такая же проблема здесь, и команда docker работала только с root, а также с этим DOCKER_HOST пустой

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


на OSX:

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

eval "$(docker-machine env default)"

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


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

На Fedora 22

Установка Docker:

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

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

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

$> sudo usermod -aG docker

демон docker должен быть запущен

$> sudo service docker start

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

$> sudo chkconfig docker on

вы можете проверить, что служба docker запущена

$> service docker status

и последнее проверить

$> docker run hello-world

для тех, кто уже пытался перезапустить вашу машину, сбросив переменную окружения DOCKER_HOST, как сказано в настройки ОКР документация и все остальные просто пытаются пойти с

sudo service docker restart

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


даем не root-доступ - из настройки

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

$ sudo groupadd docker

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

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

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

$ sudo gpasswd -a ${USER} docker

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

$ sudo service docker restart

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


У меня такая же проблема при запуске docker.

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

sudo docker ***your command here***

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

Для меня сработало следующее:

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

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

sudo systemctl mask docker.service

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

sudo systemctl list-unit-files

Output of sudo systemctl list-unit-files

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

sudo sytemctl unmask docker.service

теперь служба будет включена, как показано ниже enter image description here


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


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

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


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

sudo usermod -aG docker $(whoami)


на 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"

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


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

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

unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

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


протестировано в 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