Docker-Compose не може підключитися до Docker Daemon


114

Я отримую повідомлення про помилку, в якому говориться, що я не можу підключитися до демона докера. Я вивчив відповіді інших людей, які мали подібні проблеми, але це не допомогло. Я запускаю версію Ubuntu 15.10. Я спробую надати всю інформацію, яку я маю.

root@# docker-compose -f docker-compose-deps.yml up -d
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

Версія докера

root@# sudo docker     version
Client:
Version:      1.9.1
API version:  1.21
Go version:   go1.4.2
Git commit:   a34a1d5
Built:        Fri Nov 20 13:20:08 UTC 2015
OS/Arch:      linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Докер-композиційна версія

root@# docker-compose --version
docker-compose version 1.5.2, build 7240ff3

Це те, що відбувається, якщо я спробую зупинити або запустити послугу ...

root@# sudo service docker stop
stop: Unknown instance: 
root@# sudo service   docker start
docker start/running, process 5375

Якщо я біжу ps aux | grep docker

root@# ps aux | grep docker
root      4233  0.0  0.0  13692  2204 pts/15   S+   10:27   0:00 grep --color=auto docker

Будь-яка допомога буде дуже вдячна. Повідомте мене, якщо вам може знадобитися більше інформації.


1
Будь ласка, не скасовуйте своїх публікацій. Після того як ви опублікували питання, ви ліцензували вміст для спільноти Overflow Overflow у цілому (під ліцензією CC-by-SA). Якщо ви хочете від’єднати цю публікацію від свого облікового запису, див. Який правильний шлях для запиту на роз'єднання? .
Клопи

Відповіді:


268

У мене була така ж помилка, після 15 хв налагодження. Виявляється, все, що потрібно - це sudo:) Ознайомтесь із [Створити групу Docker] тут https://docs.docker.com/engine/installation/linux/ubuntulinux/, щоб позбутися від префіксу sudo.


35
Їм потрібна краща помилка = / У цього питання 13000 переглядів
Джонатан

4
чоловіче, ти заощадив близько 30 годин лише для тих, хто проголосував, і, ймовірно, це лише 1% часу, коли ти дійсно заощадив
vak

5
справжнє виправлення - це створення групи докерів, а на sudoмій погляд, це просто обхід / хакер. так як група, що створює частину, тут не пояснюється, дається лише посилання, і зміст цього посилання змінився, я вважаю це лише відповіддю на посилання, і тепер воно по суті є марним (для реальної частини виправлення). ви можете, можливо, додати опис того, як додати цю групу?
hoijui

2
Я також думаю sudo, що це погана ідея. Дивіться документи Docker для керування Docker як некористувального
jwhitlock

6
В основному, все, що вам потрібно зробити, це sudo usermod -aG docker $USER- і це працюватиме згодом.
користувач2340939

65

У мене була ця проблема і не хотілося псувати речі з використанням sudo. Під час розслідування я намагався отримати інформацію:

docker info

На диво, у мене була така помилка:

Отримано дозвіл під час спроби підключення до сокету демона Docker на unix: ///var/run/docker.sock: Отримати http: ///var/run/docker.sock/v1.38/info : набрати unix / var /run/docker.sock: connect: дозвіл відхилено

Чомусь мені не вистачило привілеїв, наступна команда вирішила мою проблему:

sudo chown $USER /var/run/docker.sock

Et voilà!


Як щодо повторного запуску докера знову? Ми повинні зробити цю чуму знову?
Світло.Г

Ні, це має спрацювати при перезапуску докера. Але я не впевнений, що станеться, якщо перезапустити машину.
madjaoue

За замовчуванням Docker утримуватиметься docker.sockз некореневою групою, dockerяк за замовчуванням. Але ми могли це змінити -Gпрапором під час ініціювання демона Докера. У моєму випадку я додаю групу для $USERNAME, означає додавати групу докера, а потім перезавантажую машину (ubuntu 16.04, ПК). Це добре працює. І це рекомендується в документах докера.
Світло.Г

3
Для мене теж працює :)
Каміль Дж.

27

Здається, ваша проблема була створена старою помилкою Docker, де файл сокету не відтворився після аварії Docker. Якщо це проблема, то перейменування файлу сокету повинно дозволити його знову створити:

$ sudo service docker stop
$ sudo mv /var/lib/docker /var/lib/docker.bak
$ sudo service docker start

Оскільки ця помилка виправлена, більшість людей, які отримують помилку Couldn't connect to Docker daemon, ймовірно, отримують її, оскільки вони не входять до dockerгрупи та не мають дозволу на читання цього файлу. Біг з sudo docker ...виправить це, але це не чудове рішення.

Докер можна запускати як некореневий користувач (без sudo), який має належні групові дозволи. Документи після встановлення Linux мають детальну інформацію. Коротка версія:

$ sudo groupadd docker
$ sudo usermod -aG docker $USER
# Log out and log back in again to apply the groups
$ groups  # docker should be in the list of groups for your user
$ docker run hello-world  # Works without sudo

Це дозволяє користувачам dockerгрупи без запуску dockerта docker-composeкоманд без них sudo. Docker сам запускає корінь, дозволяючи виконувати деякі атаки, тому вам все одно потрібно бути обережними, з якими контейнерами ви запускаєте. Докладніше див. У Документації щодо безпеки Docker .


Це питання стосується встановлення Linux, і виправлення передбачає зміни в хост-системі Linux, щоб його виправити. Ви отримаєте кращу інформацію, якщо опублікуєте подібне запитання з тією ж деталлю, але для Windows. Щоб вирішити себе, рекомендую уважно прочитати документацію Docker для Windows
jwhitlock

10

У мене було те саме питання. Зробивши нотатки та проаналізувавши деякі результати налагодження, нарешті, я вирішив, що може бути тією ж помилкою. Почніть службу спочатку,

service docker start

Не забудьте включити свого користувача до групи докерів.


Я працював як root, коли зіткнувся з цією помилкою. Походив sudoвстановив її для інших -_- радий знайти , що це було на самому ділі це, що я забув зробити. Так просто!
Буде

8

Ви повинні додати свого користувача до групи "докер" з чимось на зразок:

sudo usermod -aG docker $ {USER}


5

Я отримав цю помилку, коли в Dockerfileкаталозі були файли, недоступні поточному користувачеві. dockerтаким чином не вдалося завантажити весь контекст до демона і принесла повідомлення " Не вдалося підключитися до демона Docker за адресою http + docker: // localunixsocket ".


2
Дякую! Це вирішило це для мене. Легко перевірити, оскільки всі команди докер працювали, але докер-композиція цього не зробила. Також docker-compose працював в іншому каталозі. Дуже оманливе повідомлення про помилку, BTW.
Csongor Fagyal

1
Це дійсно повинно бути вище
Арлен Андерсон

1
Дякую! працював на мене. Використання docker build .призведе до будь-яких проблем з дозволом.
кожний

Єдине, що спрацювало - чому повідомлення про помилки Докера так погані? Дякую!
coderMe

4

Одним із способів вирішити це було б спочатку додати свого користувача до dockerгрупи, виконавши наступне

sudo usermod -aG docker $USER

ВАЖЛИВО: Не забудьте вийти зі своєї системи (а не лише свого терміналу) та знову ввійти, щоб це вступило в силу!


sudo usermod -aG docker $ {USER} Ми також повинні вийти та увійти, щоб застосувати зміни: su - $ {USER}
user3785966

3

З виходу "ps aux | grep docker", схоже, демон docker не працює. Спробуйте скористатися методами нижче, щоб побачити, що не так і чому докер не запускається

  1. Перевірте журнали докерів

$ sudo tail -f /var/log/upstart/docker.log

  1. Спробуйте запустити докер в режимі налагодження

$ sudo docker -d -D


2

У моєму випадку ваша служба докера може бути припинена

Команда для запуску послуги докера:

$ sudo systemctl start docker

Команда перевірити, чи запускається вона:

$ sudo docker run hello-world


2

Ще одна причина, по якій ця помилка може з'являтися: для мене це було неправильним визначенням контуру зображення у docker-compose.yml:

  service:
    image: ${CONTAINER_REGISTRY_BASE}/my-service
   ...

Подивіться спочатку добре, але я CONTAINER_REGISTRY_BASE=eu.gcr.io/my-project/поставив на околиці. Мабуть, //шлях у зображенні спричинив цю помилку.

docker-compose: v.1.21.2
docker: 18.03.1-ce

2

просто спробуйте sudo. Здається, питання про дозвіл!

sudo docker-compose -f docker-compose-deps.yml up -d

це працювало на мене.


1

Я використовував Ubuntu 16.04 і виявив цю проблему також, коли використовував docker-compose. Я виправив це, виконавши цю команду.

$ sudo systemctl start docker
$ sudo docker-compose build

1

Чи є невелика можливість ви видалили машину за замовчуванням? Але спочатку перевірте, чи всі файли є (OSX, подібний в інших системах)

brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve
brew link docker docker-compose docker-machine xhyve docker-machine-driver-xhyve

sudo chown root:wheel /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
sudo chmod u+s /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve

Крім того, встановіть Docker App, оскільки це набагато простіше в обслуговуванні контейнерів:

brew cask reinstall docker

ans запустити програму Docker від пошуку (зачекайте, поки сервіс повністю запуститься)

Потім перевірте встановлення за допомогою:

docker-machine ls

якщо в списку немає машин, створіть її та запустіть її:

docker-machine create default
docker-machine start default

Після цього складіть, складіть і всі інші команди повинні працювати належним чином.


1

в моєму випадку це тому, що дозвіл ubuntu,

  1. Елемент списку

перевірити дозвіл на

docker info 

якщо вони друкують дозвіл на проблему, введіть тут опис зображення тоді використовуйте

sudo chmod -R 777 /var/run/docker.sock

0

Для мене виправленням було встановлення нової версії (1.24) docker-composeвикористання цієї статті .

Попередня версія (1.17) була встановлена ​​зі ubuntuсховища за замовчуванням, але після встановлення нової версії мені вдалося запустити контейнер. Сподіваюся, це комусь допоможе.



-1

У моєму випадку є однакова помилка, коли я намагаюся, docker-compose build і моє рішення було просто додатиsudo

sudo docker-compose build

-2

Я знайшов це і, здавалося, вирішив свою проблему.

GitHub Fix Docker Daemon Crash

Я змінив вміст мого файлу docker-compose-deps.yml, як видно з посилання. Потім я побіг docker-compose -f docker-compose-deps.yml up -d. Тоді я змінив її назад, і це спрацювало чомусь. Мені не потрібно було продовжувати кроки у наданому посиланням, але перші два кроки вирішили проблему для мене.


2
ubuntu 16.04: просто додайте sudo: sudo docker-compose up -d
Moccine

Це недостатньо як відповідь. Якщо ви хочете прийняти власну відповідь, ви повинні викласти саму причину своєї проблеми. Інакше це було б справжнім оманом для інших. До речі, тут є інші відповіді, вони допомогли? Оскільки я не бачив жодних ваших коментарів.
Світло.Г
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.