Команда 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, но это была та же проблема для мне).