Команда 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
вы пробовали?
у меня была та же проблема. Два дня боролся, чтобы решить эту проблему.
это сработало только тогда, когда я сделал:
-
по данным настройки все!--10-->, вам нужно добавить ключ Докера, если он еще не добавлен с помощью:
$ sudo wget -qO- https://get.docker.com/gpg | sudo apt-key add -
-
затем убедитесь, что вы предоставляете себе права 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
У меня такая же проблема при запуске 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
чтобы включить автоматический / ручной запуск службы, вам нужно разоблачить его с помощью:
sudo sytemctl unmask docker.service
поскольку docker привязывается к сокету unix, который принадлежит root при запуске, использование "sudo" вместе с командами docker будет работать.
- У меня также была та же проблема. Проблема заключалась в сокетах, выделенных docker-daemon и docker-client.
- во-первых, разрешение не было установлено для docker-client на docker.носок вы можете установить его с помощью "sudo usermod-aG docker $USER"
- затем проверьте файл bash, где работает docker-client, для меня это было на 0.0.0.0:2375, в то время как docker-daemon работал в сокете unix.(Он был установлен в файле конфигурации dockerd).
- просто замечание bash-line и он будет работать нормально.
- но если вы хотите заставить его работать на TCP-порту вместо сокета unix, измените файл конфигурации dockerd и установите его на 0.0.0.0.2375 и сохраните строку в bash, как она есть, если она присутствует или установите ее в 0.0.0.0:2375.
Я столкнулся с той же ошибкой на экземпляре Amazon EC2. Проблема была исправлена после перезапуска экземпляра.
на 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