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 показывают следующие шаги:
- Создать группу Докер.
sudo groupadd docker
- Добавьте пользователя в группу докеров.
sudo usermod -aG docker $(whoami)
- Выйдите из системы и войдите в систему, чтобы обеспечить выполнение докеров с правильными разрешениями.
- Запустите докер.
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
, установите ее, используя один из следующих способов:
См.: Начало работы с 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
Macos
Используйте новое приложение Docker Community Edition для macOS. Например:
-
Удалите все пакеты Docker Homebrew, которые вы установили до сих пор:
brew uninstall docker-compose
brew uninstall docker-machine
brew uninstall docker
-
Установите приложение вручную или через Homebrew-Cask:
brew cask install docker
Примечание. Это приложение создаст необходимые ссылки на docker
, docker-compose
, docker-machine
и т.д.
-
После запуска приложения проверьте значок "Докер-кит" в меню состояния.
- Теперь вы должны иметь возможность использовать команды
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