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


Answers

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

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

    sudo groupadd docker

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

    sudo gpasswd -a ${USER} docker

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

    sudo service docker restart

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

Question

Я хочу сделать переход к Docker, так что я только начал обходиться с ним. Я установил Docker на установку VirtualBox Ubuntu 15.10 (Wily Werewolf), и, как было предложено здесь, я попытался запустить базовое изображение Docker 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?

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




Для 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 sytemctl unmask docker.service

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




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

sudo service docker start

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




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

sudo docker run ...

[Ubuntu 15.10]




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



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




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

sudo usermod -aG docker $(whoami)




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

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

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

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

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

    $ sudo usermod -aG docker $USER

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




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

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

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

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




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

sudo service docker restart

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






Related