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" раскрывает следующие шаги:
- Создайте группу докеров.
доко группы sudo
- Добавьте пользователя в группу Docker.
sudo usermod -aG docker $ (whoami)
- Выйдите из системы и войдите снова, чтобы убедиться, что Docker работает с правильными разрешениями.
- Запустите докер.
запуск докера службы 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. Например:
Удалите все пакеты 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
,docker-compose
,docker-machine
Команды как обычно в Терминале.
Связанные с:
- Заваривать, устанавливать докер, не входит ли докер движок?
- Не удается подключиться к демону Docker в macOS
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 с помощью этих команд:
$ 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, перезагрузка не требуется.