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



Answers

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

eval "$(docker-machine env default)"

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

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

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

Question

После того, как я обновляю версию 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

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




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



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




У меня также возникла проблема «Не удается подключиться к демону 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



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

Связанный:

  • Brew install docker не включает докерный двигатель?
  • Не удается подключиться к демону Docker на macOS

Linux / Windows

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




Попробуйте изменить файл конфигурации 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



После 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



После подробного расследования эта проблема возникает каждый раз после перезагрузки 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  :

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




Проверьте, используете ли вы 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/




У меня была аналогичная проблема.

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

На ubuntu:

sudo apt remove docker

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




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

ls -l /var/run/docker.sock

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

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

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




Если вы получаете сообщение Can't connect to docker daemon. Is 'docker -d' running on this host? удается Can't connect to docker daemon. Is 'docker -d' running on this host? 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 запущен.




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

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

docker-machine restart

А потом

docker-machine env

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

eval $(docker-machine env)

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

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




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

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

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

Теперь, если вы хотите упростить вещи и получить больше времени, вы можете запустить мой скрипт init с помощью параметра 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

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




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

$ sudo service docker stop
$ sudo service docker start

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

Пытаться

$ sudo docker info

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

$ docker info





Related



Tags

linux linux   docker docker