it-swarm.com.ru

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

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

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

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

227
kramer65

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

Sudo usermod -aG docker $(whoami)

затем выйти и снова войти в систему или перезапустить систему . test с помощью docker version

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

426
Zubair Alam

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

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

    Sudo groupadd docker

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

    Sudo gpasswd -a ${USER} docker

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

    Sudo service docker restart

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

135
neo

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

Sudo service docker restart

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

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

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, то это, очевидно, означает, что Docker не активен. В этом случае убедитесь, что вы начинаете это с:

Sudo service docker start

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

31
Jim Fasarakis Hilliard

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

Sudo docker run ...

[Ubuntu 15.10]

18
Martin Vseticka

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

ls -l /var/run/docker.sock

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

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

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

10
kevthanewversi

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

Правка

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

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

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

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

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
9
deFreitas

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

Sudo service docker start

Ты это пробовал?

8
yushulx

У меня такая же проблема. Два дня боролись за ее решение.

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

  1. В соответствии с Docker's Tutorial , вам нужно добавить ключ Docker, если он еще не добавлен, используя:

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

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

    $ Sudo usermod -aG docker $USER

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

6
AmrMohallel

Для OSX

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

eval "$(docker-machine env default)"

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

5
Danny

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

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

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

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

5
Daniel Loureiro

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

Sudo service docker restart

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

3
Mr.Moe

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

На Fedora 22

Установка Docker:

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

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

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

$> Sudo usermod -aG docker

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

$> Sudo service docker start

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

$> Sudo chkconfig docker on

Вы можете убедиться, что служба Docker запущена

$> service docker status

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

$> docker run hello-world
3
Ronald Weidner

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

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

$ Sudo groupadd docker

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

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

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

$ Sudo gpasswd -a ${USER} docker

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

$ Sudo service docker restart
3
Eduardo Marín Izquierdo

Для 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

 Output of Sudo systemctl list-unit-files

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

Sudo sytemctl unmask docker.service

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

2
lordzuko

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

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

Sudo docker ***your command here***
2
Dadaso Zanzane

Попробуйте использовать «Sudo» с командой, которую вы выполняете. 

2
user3737461

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

1
raja
  1. У меня тоже была такая же проблема. Проблема была в сокетах, выделенных для docker-daemon и docker-client.
  2. Во-первых, не было установлено разрешение для docker-клиента на docker.sock. Вы можете установить его, используя «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.
1
Nilesh Kande

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

0
Sumit Bhoyar

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

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

unset DOCKER_Host
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

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

0
mopsyd

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

Для 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"

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

0
user6646280

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

Sudo usermod -aG docker $(whoami)

0
BALAJI POTHULA