Docker не может подключиться к демону 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

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

47 ответов

Linux

Документация "Действия после установки Linux" раскрывает следующие шаги:

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

Mac OS X

Как говорит Dayel Ostraco, необходимо добавить переменные окружения:

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

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

Linux

Чтобы запустить демон Docker в 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

На macOSdockerДвоичный файл - это всего лишь клиент, и вы не можете использовать его для запуска демона 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

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

eval "$(docker-machine env default)"

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

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

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

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

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

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

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

# 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  :

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

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

sudo usermod -aG docker yourusername

или же

sudo usermod -aG docker $(whoami)

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

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

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

ls -l /var/run/docker.sock

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

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

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

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

sudo service docker stop
sudo service docker start

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

Лучший способ выяснить, почему 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

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

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

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

Используйте приложение 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. После запуска приложения проверьте значок Docker кита в меню состояния.

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

Связанные с:

Linux / Windows

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

Если вы получите сообщение 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 запущен.

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

$ sudo service docker stop
$ sudo service docker start

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

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

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

Выполните следующую команду:

      docker context use default

В апреле 2020 года на mac os catalina вам просто нужно открыть настольное приложение

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

$ sudo service docker stop
$ sudo service docker start

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

Пытаться

$ sudo docker info

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

$ docker info

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

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

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

DOCKER

неизвестный

ОШИБКИ

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

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

docker-machine rm -f default

куда default это имя вашего докера Затем;

docker-machine create -d virtualbox default

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

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

docker-machine ls

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

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

sudo systemctl start docker

Запустите приведенную выше команду, и она запустит все связанные с докером потоки / сервисы.

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

sudo usermod -aG docker $USER

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

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

1) Создать Docker Group

sudo groupadd docker 

2) Сделать пользователя принадлежащим к группе Docker, чтобы получить привилегии группы.

sudo usermod -aG docker $USER

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

env | grep DOCKER_HOST

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

unset DOCKER_HOST

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

docker run hello-world

У меня была такая же проблема - "Не удается подключиться к демону Docker". (за исключением того, что я не получил никаких ошибок '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

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

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

ЛИНУКС

вы можете использовать этот ответ /questions/20855713/docker-ne-mozhet-podklyuchitsya-k-demonu-docker/20855726#20855726 , и даже после его использования вы все равно получите ту же ошибку. тогда вы, возможно, ранее установили рабочий стол docker и теперь переключились на docker-engine

вы можете удалить файлы службы рабочего стола Docker с помощью этой команды

      $ rm -rf ~/.docker

У меня просто была такая же проблема, работающая на 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)

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

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

docker-machine restart

А потом

docker-machine env

В заключение,

eval $(docker-machine env)

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

docker ps -a или же docker-machine ls, Это перечислит все контейнеры.

У меня та же проблема. В 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 до этого.

Возможно, Docker Service не запущен.

Если вы используете RedHat/Fedora/CentOS, попробуйте это:

sudo systemctl start docker

Если вы используете Ubuntu / Debian:

sudo service start docker

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

Чтобы решить эту проблему, мне пришлось включить службу докеров:

sudo systemctl enable /usr/lib/systemd/system/docker.service

У меня была похожая проблема.

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

На убунту:

sudo apt remove docker

решил проблему для меня

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

sudo docker daemon --storage-driver=devicemapper

Ответов уже много, но в надежде, что это кому-то поможет. Это проблема, которая возникает при установке докера через оснастку. Запуск через sudo позволит вам подключиться к демону, но это приводит к другим проблемам. Решение состоит в том, чтобы выполнить некоторые шаги ПЕРЕД установкой пакета snap, сделав полный список шагов:

sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker
sudo snap install docker

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

https://github.com/docker-archive/docker-snap/issues/1

Другие вопросы по тегам