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

После обновления версии Docker до 0.8.0 я получаю сообщение об ошибке при вводе sudo docker version:

Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
2014/02/19 12:54:16 Can't connect to docker daemon. Is 'docker -d' running on this host?

И я выполнил инструкции и ввел команду sudo docker -d, и я получил следующее:

[/var/lib/docker|2462000b] +job initserver()
[/var/lib/docker|2462000b.initserver()] Creating server
open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory[/var/lib/docker|2462000b] -job initserver() = ERR (1)
2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory

Как решить проблему?

Ответ 1

Linux

Последующие шаги для документации Linux показывают следующие шаги:

  1. Создать группу Докер.
    sudo groupadd docker
  2. Добавьте пользователя в группу докеров.
    sudo usermod -aG docker $(whoami)
  3. Выйдите из системы и войдите в систему, чтобы обеспечить выполнение докеров с правильными разрешениями.
  4. Запустите докер.
    sudo service docker start

Mac OS X

Как говорит Дейел Острако, необходимо добавить переменные окружения:

docker-machine start # Start virtual machine for docker
docker-machine env  # It helps to get environment variables
eval "$(docker-machine env default)" # Set environment variables

Команда docker-machine start выводит комментарии для руководства процессом.

Ответ 2

Если вы запускаете Docker на OS X, работа со следующим eval работает для меня.

eval "$(docker-machine env default)"

Если вы не хотите запускать этот оператор eval на каждом сеансе терминала, вы можете добавить его в свой bash_profile:

#Docker
eval "$(docker-machine env default)"

Обязательно перезапустите сеанс терминала или запустите источник в bash_profile, чтобы изменения вступили в силу.

Ответ 3

Linux

Чтобы запустить демон докеров в Linux (из CLI), выполните:

$ sudo service docker start # Ubuntu/Debian

Примечание. Пропустите символ $ при копировании и вставке.

В RedHat/CentOS запустите: sudo systemctl start docker.

Для инициализации "базовой" файловой системы выполните:

$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start

или вручную:

$ sudo docker -d --storage-opt dm.basesize=20G

Установите docker-machine в Linux

Чтобы установить машинные двоичные файлы в Linux:

  • локально:

    install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) $HOME/bin/docker-machine
    
  • Глобальный:

    sudo bash -c 'install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine'
    

Macos

На macOS двоичный файл docker является только клиентом, и вы не можете использовать его для запуска демона docker, потому что демон Docker использует специфические для Linux функции ядра, поэтому вы не можете запустить Docker изначально в OS X. Таким образом, вам нужно установить docker-machine в порядок для создания виртуальной машины и присоединения к ней.

Установите docker-machine на macOS

Если у вас еще нет команды docker-machine, установите ее, используя один из следующих способов:

  • С помощью команды Brew: brew install docker-machine docker.
  • вручную из GitHub:

    install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine
    

См.: Начало работы с Docker для Mac.

Настроить docker-machine на macOS

Чтобы запустить Docker Machine через Homebrew, запустите:

brew services start docker-machine

Чтобы создать машину по default (если у вас ее нет, см.: docker-machine ls):

docker-machine create --driver virtualbox default

Затем настройте среду для клиента Docker:

eval "$(docker-machine env default)"

Затем выполните двойную проверку путем перечисления контейнеров:

docker ps

См.: Начало работы с Docker Machine и локальной виртуальной машиной.


Установите Docker.app на macOS

В качестве альтернативы решению выше вы можете установить приложение Docker:

brew cask install docker

Проверьте это сообщение для получения более подробной информации. См. Также: Не удается подключиться к демону Docker на macOS

Ответ 4

После подробного исследования эта проблема кажется каждый раз после перезагрузки Mac OS X (или перезагрузка виртуальной машины Docker), которая не позволяет клиенту Docker подключиться к демону Docker.

Чтобы решить проблему, вы можете:

A) Переустановите Docker Toolbox с помощью официального установщика (https://www.docker.com/products/docker-toolbox) или просто

B) Выполните следующие команды в следующем порядке:

# First make sure that the virtual machine is running
docker-machine start default

# Regenerate TLS connection certs, requires confirmation
docker-machine regenerate-certs default

# Finally, set env
eval "$(docker-machine env default)"

C) То же, что и (B), вы можете также скопировать и вставить следующую строку для запуска всех трех команд:

docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"

Если вы получили следующую ошибку:

Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err     : exit status 255
output  :

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

Ответ 5

Обычно это происходит, когда вы не находитесь в группе docker. Вы можете добавить себя в группу docker:

sudo usermod -aG docker yourusername

или

sudo usermod -aG docker $(whoami)

После этого вам необходимо выйти из системы и вернуться на сервер.

Кроме того, вы можете sudo каждый Docker команды.

Ответ 6

Если все остальные решения выше не работают, вы можете попробовать проверить право собственности на /var/run/docker.sock:

ls -l /var/run/docker.sock

Если вы не являетесь владельцем, измените право собственности на команду:

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

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

Ответ 7

Лучший способ узнать, почему Docker не работает, - это запустить демон вручную.

$ sudo service docker stop
$ ps aux | grep docker  # do this until you don't see /usr/bin/docker -d
$ /usr/bin/docker -d

Демон Docker регистрируется в STDOUT, поэтому он начнет выдавливать все, что он делает.

Вот моя проблема:

[8bf47e42.initserver()] Creating pidfile
2015/01/11 15:20:33 pid file found, ensure docker is not running or delete /var/run/docker.pid

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

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

Ответ 8

Если вы получили сообщение Can't connect to docker daemon. Is 'docker -d' running on this host?, вы можете проверить его на docker version.

Если вы видите такую ​​информацию, как работает Docker Client. но Docker Server не является, очевидно, что вам нужно запустить сервер Docker.

В CentOS вы можете использовать service для запуска или остановки сервера Docker.

$ sudo service docker stop
$ sudo service docker start

Затем, после ввода docker version, вы получите информацию Docker Client и Docker Server, и демон Docker был запущен.

Ответ 9

Я перезапущу Docker после его установки:

$ sudo service docker stop
$ sudo service docker start

И он работает.

Ответ 10

Сделайте ps aux | grep docker, чтобы увидеть, работает ли демон. Если не запустить /etc/init.d/docker start

Ответ 11

Я столкнулся с этой проблемой, и я перезапустил Docker, используя следующие команды:

$ sudo service docker stop
$ sudo service docker start

Но я не решил свою проблему, потому что забыл выполнить мои команды Docker без sudo. Для тех, кто сталкивается с этой проблемой, попробуйте проверить это.

Try

$ sudo docker info

вместо этого:

$ docker info

Ответ 12

У меня схожая проблема. Мне пришлось выйти из системы и снова войти в оболочку, потому что я только что установил Docker, и следующая команда не отображалась в моей среде.

export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc

Ответ 13

У меня такая же ошибка, и попытка docker-machine regenerate-certs или eval.. не работает для меня.

Это на OS X 10.11.3 (El Capitan) и Docker v1.10.1. Я смог исправить это только путем удаления и повторного создания докер-машины. Источник

Если вы выполняете docker-machine ls, он показывает вам аналогичный вывод ниже:

DOCKER

Unknown

ОШИБКИ

Невозможно запросить версию докера: не удается подключиться к конечной точке устройства док-станции

Попробуйте удалить свою машину Docker с помощью

docker-machine rm -f default

Где default - ваше имя машины Docker. Тогда;

docker-machine create -d virtualbox default

Создает новую машину Docker.

Двойная проверка, что теперь все выглядит нормально (без ошибок или неизвестного Docker):

docker-machine ls

Наконец, не забудьте запустить "$(docker-machine env default)", прежде чем продолжить или запустить Docker Quickstart Terminal, который сделает это за вас...

Ответ 14

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

sudo usermod -aG docker $USER

Затем выйдите из системы и войдите в систему.

Ответ 15

У меня была такая же проблема - "Не удается подключиться к демону докеров". (за исключением того, что я не получил никаких ошибок "file not found" при попытке запустить сервер.)

'ps' показал, что "/usr/bin/docker -d" все еще работает

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

...
2014/03/24 21:57:29 pid file found, ensure docker is not running or delete /var/run/docker.pid

Итак, я с опозданием понял, что установка докера может быть зарегистрирована демоном с выскочкой, которая начала его для меня. Следовательно, пытаясь убить демона, чтобы перезагрузить его вручную, (операция не разрешена). Поэтому я сделал

sudo kill -9 <PID>

в процессе демона. Другой демон немедленно занял свое место, и этот новый теперь позволяет клиенту CLI подключиться:

$ sudo docker info
Containers: 0
Images: 0
Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 0
WARNING: No memory limit support
WARNING: No swap limit support

Ответ 16

У меня просто была такая же проблема, работающая на Amazon AWS.

Вот что я пытался:

  • Настройте docker-machine локально с уже существующим экземпляром AWS
  • Используется общая настройка
  • Это как-то связано, но так как удаленный порт был закрыт, это не удалось
  • После этого демон Docker отказался запускаться, но запуск dockerd сработал...

Было проверено следующее на удаленной машине:

service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success

Я удалил /var/lib/docker и удалил все, но после переустановки не было никакого успеха. К сожалению, у меня нет журналов, сохраненных от сбоев, но docker.service просто отказался запускаться.

Тем не менее, что в конечном итоге решило мою проблему в основном:

sudo usermod -aG docker $(whoami)

Ответ 17

Если вы используете OS X с помощью инструмента Docker, выполните следующие действия.

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

docker-machine restart

И затем

docker-machine env

Наконец,

eval $(docker-machine env)

Чтобы проверить, работает ли демон:

docker ps -a или docker-machine ls. В этом списке будут указаны все контейнеры.

Ответ 18

Следующий сайт Docker DOC: Управление Docker как пользователь без полномочий root

1) Создать группу Docker

sudo groupadd docker 

2) Заставьте пользователей принадлежать группе докеров, чтобы получить групповые привилегии.

sudo usermod -aG docker $USER

Проверьте, установлена ​​ли переменная среды DOCKER_HOST для вашей оболочки.

env | grep DOCKER_HOST

Если он существует,

unset DOCKER_HOST

Тогда это должно работать:

docker run hello-world

Ответ 19

Использование приложения Docker CE

Macos

Используйте новое приложение Docker Community Edition для macOS. Например:

  1. Удалите все пакеты Docker Homebrew, которые вы установили до сих пор:

    brew uninstall docker-compose
    brew uninstall docker-machine
    brew uninstall docker
    
  2. Установите приложение вручную или через Homebrew-Cask:

    brew cask install docker
    

    Примечание. Это приложение создаст необходимые ссылки на docker, docker-compose, docker-machine и т.д.

  3. После запуска приложения проверьте значок "Докер-кит" в меню состояния.

  4. Теперь вы должны иметь возможность использовать команды docker, docker-compose, docker-machine как обычно в терминале.

Связанный:

Linux/Windows

Загрузите Docker CE со страницы загрузки и следуйте инструкциям.

Ответ 20

У меня такая же проблема. В CentOS 6.5:

ps aux |grep `cat /var/run/docker.pid`

Если он показывает, что процесс демона Docker не существует, я печатаю:

docker -d

Затем Ctrl + D, чтобы остановить Docker. Поскольку мы используем опцию -d, Docker будет работать как демон. Теперь мы можем сделать:

service docker start

Тогда я могу сделать docker pull centos. Это все.

ПРИМЕЧАНИЕ. Если они не работают, вы можете попробовать yum update, а затем повторить их снова, потому что я yum install до этого.

Ответ 21

Docker Service может не работать.

Если вы находитесь в RedHat/Fedora/CentOS, попробуйте следующее:

sudo systemctl start docker

Если вы находитесь на Ubuntu/Debian:

sudo service start docker

Докер начнет работать на вашем хосте и соответствующем порту.

Ответ 22

Чтобы исправить ошибку, вам необходимо выпустить следующие команды в терминале. Я объясню каждый шаг:

# Uninstall Docker from apt packages
$ sudo apt-get remove docker docker.io

# Remove it from the libraries just to be
# sure it gone forever
$ sudo rm -rf /var/lib/docker/*

Теперь, если вы хотите упростить вещи и получить больше времени, вы можете запустить init script с параметром installDocker:

# Pull the init script from GitHub
$ wget https://github.com/dminca/dotfiles/blob/master/init

# Add rights to run the script
$ chmod 755 init

# Just run the script with the installDocker parameter
$ ./init installDocker

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

Ответ 23

Проверьте, используете ли вы Docker Machine:)

Запуск docker-machine env default должен сделать трюк.

Потому что согласно документации:

Docker Machine - это инструмент, который позволяет вам устанавливать Docker Engine на виртуальных хостов и управлять хостами с помощью команд docker-machine. Вы может использовать Machine для создания узлов Docker на локальном Mac или Windows в вашей сети компании, в вашем центре обработки данных или в облаке таких как AWS или Digital Ocean.

Используя команды docker-machine, вы можете запускать, проверять, останавливать и перезапустить управляемый узел, обновить клиент и демон Docker и настройте клиент Docker, чтобы поговорить с вашим хостом.

Наведите машинный CLI на запущенный управляемый узел, и вы можете запустить docker непосредственно на этом хосте. Например, запустите docker-machine env default, чтобы указать на узел с именем default, следуйте на экране инструкции для завершения установки env и запустить docker ps, docker run hello-world и т.д.

https://docs.docker.com/machine/overview/

Ответ 24

У меня была та же проблема, что и Docker 1.10 на Ubuntu 14.04, и ни один из этих ответов не работал. Для меня исправить было указание драйвера хранилища при запуске демона Docker.

sudo docker daemon --storage-driver=devicemapper

Ответ 25

  • У меня тоже была такая же проблема. Проблема была в сокетах, выделенных для 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.

Ответ 26

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

sudo service docker stop
sudo service docker start

просто начать это.

Ответ 27

Попробуйте изменить конфигурационный файл Docker, docker или docker-network в /etc/sysconfig:

(... ~ v1.17)

docker файл:

OPTIONS= -H fd://

или (v1.18):

docker-network файл:

DOCKER_NETWORK_OPTIONS= -H unix:///var/run/docker.sock

Ответ 28

Вы пытались отключить и снова включить его?: -)

У меня была такая же проблема после обновления до Docker 1.10.1 на моем Mac. Я сделал следующее:

На терминале быстрого запуска Docker

$exit

$exit

затем

docker-machine kill default

а затем перезапустил терминал быстрого запуска Docker

Это решило мою проблему.

Ответ 29

Если регенерация сертификатов TLS не работает

docker-machine regenerate-certs default

Попробуйте перезагрузить машину докеров и установите переменную env:

docker-machine restart default
eval $(docker-machine env default)

Проверьте, работает ли машина:

docker-machine ls

или, альтернативно,

docker run hello-world

Это сработало для меня. Однако, если у вас все еще нет демона, страница устранения неполадок Docker описывает процесс остановки, удаления и создания новой машины.

Ответ 30

У меня также возникла проблема "Не удается подключиться к демону Docker. Является ли демон docker на этом хосте?".

Я забыл использовать sudo. Надеюсь, это поможет некоторым из нас.

$:docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

$:sudo docker images
REPOSITORY   TAG   IMAGE ID   CREATED   SIZE