Compose: Не удалось подключиться к демону Docker по адресу http + unix: //var/run/docker.sock - он работает?

Созданный на 29 мар. 2015  ·  131Комментарии  ·  Источник: docker/compose

Все перепробовал в этой ветке: https://github.com/docker/compose/issues/88

По-прежнему не повезло.

rept<strong i="8">@temponia</strong>:~/passenger$ netstat -ant  |grep 4243
tcp        0      0 127.0.0.1:4243          0.0.0.0:*               LISTEN     
rept<strong i="9">@temponia</strong>:~/passenger$ echo $DOCKER_HOST
tcp://localhost:4243
rept<strong i="10">@temponia</strong>:~/passenger$ sudo docker-compose build db uses an image, skipping
Building web...
Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

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

Это версия:

rept<strong i="14">@temponia</strong>:~/passenger$ sudo docker version
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
Server version: 1.0.1
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 990021a

Есть идеи? Я также пробовал установить фиг, которая сразу работает без проблем ...

Самый полезный комментарий

Для меня тоже подходит команда sudo

Все 131 Комментарий

Такое же сообщение об ошибке появляется при запуске докера.
Решается добавлением себя в группу пользователей docker

Попробуйте выполнить следующую команду, чтобы добавить себя в группу
usermod -aG docker ${USER}

Или вы можете запустить следующую команду, чтобы узнать, к каким группам вы принадлежите
groups $USER

Похоже, что docker-compose игнорирует здесь $DOCKER_HOST env var, потому что он пытается подключиться к сокету вместо адреса 127.0.0.1.

такая же проблема здесь

Я только что столкнулся с тем же сообщением об ошибке, когда Wi-Fi на моем ноутбуке отключен без проводного подключения. Я включаю Wi-Fi и подключаюсь к домашней беспроводной сети, после чего проблема решается.

Вы можете попробовать версию 5.0.3 (предварительная сборка) по адресу https://www.virtualbox.org/wiki/Testbuilds ? Это решит эту проблему для меня.

У меня была эта проблема с использованием докера на моем Mac, но она была решена после того, как я запустил команду compose без sudo, поэтому кажется, что это проблема пользователя,

Для меня тоже подходит команда sudo

@rept , у вас все еще есть эта проблема? Версия докера, о которой вы сообщили, старше года, что, в общем, является доисторическим с точки зрения докеров :)

Интересно, следует ли оставить эту проблему открытой, потому что теперь она собирает все виды _ возможных_ причин, по которым демон не может быть достигнут (я не имею в виду это плохо; спасибо всем за предложения решений, это приветствуется)

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

Спасибо, @rept , и приятно слышать, что

я получил

ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

тоже каждый раз, когда я активирую tty: true или stdin_open: true в docker-compose.yml и запускаю docker-compose up .

Это может быть связано?

Docker version 1.9.1, build a34a1d5
docker-compose version 1.5.2, build 7240ff3

Я просто решил свою проблему, выполнив команду «docker-compose run ...» с помощью sudo.

Я столкнулся с этим при запуске docker compose up -d во время vagrant up. Пользователь vagrant был добавлен в группу docker но указанная выше ошибка появляется при запуске без sudo . Он работает позже, если вы входите в систему как пользователь vagrant но не работает во время подготовки, поэтому это как-то связано с переменными env?

docker-compose version: 1.4.1

Простое решение: sudo docker-compose up

Я столкнулся с той же проблемой:

[root<strong i="6">@c910f05c01bc07</strong> xcat-docker]# docker-compose version
docker-compose version 1.6.2, build 4d72027
docker-py version: 1.7.2
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

версия докера:

[root<strong i="10">@c910f05c01bc07</strong> xcat-docker]# docker version
Client:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64

Это обходной путь, а не решение, верно?

Я до сих пор часто сталкиваюсь с этим

Это не проблема сочинения. Если вы не можете подключиться к демону docker из compose, существует несколько вероятных причин:

  • вы забыли экспортировать переменные DOCKER_ env, что часто делается путем запуска eval $(docker-machine env default)
  • существует проблема с сетью между вами и удаленным хостом докеров (если вы работаете с облачным провайдером)
  • проблема с демоном докеров, запущенным на виртуальной машине Virtualbox
  • у вашего пользователя нет доступа к сокету демона докера из-за разрешений (если вы работаете на хосте Linux). Решение - выполнить sudo или исправить разрешения.

Это не проблемы, которые можно решить с помощью композиции.

Возникла проблема с tty , билет которой указан здесь: # 3106

Я могу подтвердить: это не проблема с докером.

Если это поможет: я столкнулся с той же проблемой (не удалось подключиться ...) на хосте Ubuntu. Запуск sudo systemctl status docker.service -l показал "настоящую" проблему. В моем случае решение заключалось в том, чтобы удалить все файлы в «/ var / lib / docker / network / files /» и перезапустить службу докеров.

привет @dnephin @madflow , я думаю, что это проблема с докером.

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

 sudo docker run -it --privileged=true  --hostname=xcatmn --name=xcatmn --add-host="xcatmn.clusers.com xcatmn:10.5.107.101" --volume /docker/xcatdata/:/install --net=subnet1 --ip=10.5.107.101  xcat/xcat-ubuntu-x86_64

но не удалось выполнить команду "docker-compose up". Docker-compose.yml - это точный эквивалент параметров и аргументов docker run:

[root<strong i="12">@c910f05c01bc07</strong> xcat-docker]# docker-compose config
networks:
  default:
    external:
      name: subnet1
    external_name: subnet1
services:
  xcatmn:
    container_name: xcatmn
    extra_hosts:
      xcatmn.clusers.com xcatmn: 10.5.107.101
    hostname: xcatmn
    image: xcat/xcat-ubuntu-x86_64
    networks:
      default:
        ipv4_address: 10.5.107.101
    privileged: true
    stdin_open: true
    tty: true
    volumes:
    - /docker/xcatdata:/install:rw
version: '2.0'
volumes: {}

Информация о версии docker и compose:

[root<strong i="16">@c910f05c01bc07</strong> xcat-docker]# docker version
Client:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64
[root<strong i="17">@c910f05c01bc07</strong> xcat-docker]# docker-compose version
docker-compose version 1.7.0dev, build 99d68be
docker-py version: 1.8.0-dev
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

Если вы можете воспроизвести проблему с подключением с помощью Compose, а не с помощью docker cli, откройте новую проблему. Включение всей имеющейся у вас информации, а также сообщения об ошибке и ссылки на вставку с docker-compose --verbose up .

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

$ cat docker-compose.yml
referenceCombo:
  build: referenceCombo

$ docker-compose build
Building referenceCombo
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.

Измените имя на "referencecombo" (все строчные буквы), и все в порядке. Сообщение об ошибке определенно не помогает понять это :(

@chriskessel Я думаю, ваша проблема

после перезапуска служб докеров у меня работает :(

перезапуск службы докера

У меня была такая же ошибка после 15 минут отладки. Оказывается, все, что ему нужно, это sudo :)
Проверьте [Создать группу Docker] здесь https://docs.docker.com/engine/installation/linux/ubuntulinux/, чтобы избавиться от префикса sudo.

Зачем нужно работать с sudo?

@fabiopaiva по умолчанию докер подключается к сокету unix, который представляет собой файл с привилегиями чтения / записи для пользователя root и группы

$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 Jun 29 23:38 /var/run/docker.sock

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

Удаляю файл /var/run/docker.sock
как мог поправить?

@pixies перезапустите службу

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

leoyuholo прокомментировал 14 мая 2015 г.

Решается добавлением себя в группу пользователей docker

Попробуйте выполнить следующую команду, чтобы добавить себя в группу
usermod -aG docker ${USER}

Или вы можете запустить следующую команду, чтобы узнать, к каким группам вы принадлежите
groups $USER

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

@alexanderadam ты нашел какое-нибудь решение? у меня такая же ошибка сейчас

@CnytSntrk извините, я решил проблему иначе. : wink:
Но удачи: four_leaf_clover: решение найдено!

@alexanderadam спасибо: +1:

Я просто решил свою проблему, выполнив команду «docker-compose run ...» с помощью sudo.

Решил проблему добавлением sudo

перезагрузка помогла мне

У меня также возникла проблема после добавления пользователя в группу докеров, чтобы избежать sudo. Перезагрузка все решила! благодаря

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

Я пробовал до рахмана. Это не сработало. Спасибо, в любом случае

+1

Это все еще проблема в Ubuntu 16.04, и я добавил себя в группу докеров, после чего сработало повторное ведение журнала. Этот вопрос не следует закрывать.

Ubuntu 16.04
https://github.com/docker/compose/issues/1214#issuecomment -102246925
Работает отлично, но перезапускается раньше

Ubuntu 16.04 имеет ту же ошибку

Решение (из https://docs.docker.com/engine/installation/linux/debian/, работает не только с Debian):

Добавьте группу докеров, если она еще не существует.
sudo groupadd docker

Добавьте подключенного пользователя «$ {USER}» в группу докеров.
Измените имя пользователя, чтобы оно соответствовало предпочтительному пользователю.
Возможно, вам придется выйти и снова войти в систему для
это вступит в силу.
sudo gpasswd -a ${USER} docker

Перезапустите демон Docker.
sudo service docker restart

@mikevoets да, я думаю, это должно решить эту проблему.

У меня было то же самое при новой установке, и я понял, что это потому, что я не использовал sudo.

Кто-нибудь знает, как его запустить без использования sudo?

Смотри мой ответ Марко

2016-11-08 0:15 GMT + 01: 00 Марко Ордонес [email protected] :

Кто-нибудь знает, как его запустить без использования sudo?

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/docker/compose/issues/1214#issuecomment -258994514,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AEN6D4Gfir0gehnbenS0IT65wLHAo2VWks5q77ERgaJpZM4D2vHs
.

@ mordonez-me, поможет добавление в группу докеров.

sudo gpasswd -a ${USER} docker

В общем, у меня есть следующие шаги установки в Centos 7 с пользователем root :

# Remove SELinux for dev VMs
yum remove -y selinux*
# Docker
curl -fsSL https://get.docker.com/ | sh
systemctl enable docker
systemctl restart docker
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` \
  > /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
gpasswd -a vagrant docker

И после этого он отлично работает с моим пользователем без полномочий root vagrant .

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

FWIW, мне нужно было перезагрузить систему, прежде чем она начала работать для меня. Вероятно, это произошло из-за того, что пакеты ядра linux-image-extra-* были недавно установлены, как того требует докер на Ubuntu Xenial . См. Предварительные требования по версии Ubuntu .

Попробуйте сначала запустить dockerd или sudo dockerd , чтобы запустить демон. Если вы начинаете dockerd с sudo вы можете также захотеть запустить docker-compose up с sudo . в остальном все нормально.

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

У меня есть следующая конфигурация в Vagrantfile :

config.vm.provision "docker"
config.vm.provision "shell", inline: "docker ps", privileged: false
# or
# config.vm.provision "shell", inline: "docker-compose ps", privileged: false

У меня следующая проблема:

  • когда я пытаюсь использовать Docker:

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?
    
  • когда я пытаюсь использовать Docker Compose:

    ==> default: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
    ==> default: 
    ==> default: If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
    

Благодаря этому комментарию у меня все заработало.

Решение:

config.vm.provision "docker"
# The following line terminates all ssh connections. Therefore
# Vagrant will be forced to reconnect.
# That's a workaround to have the docker running with the vagrant user
config.vm.provision "shell", inline:
   "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill", privileged: true
config.vm.provision "shell", inline: "docker ps", privileged: false

это не проблема, связанная с Docker, а скорее проблема с разрешением сокета linux (очень распространенная проблема между php-fpm и nginx).

1) Docker - это классическое приложение HTTP-клиент / сервер, клиент будет разговаривать с сервером через сокет или IP-адрес.
2) Сокет - это файл linux, с разрешением, он принадлежит пользователю и группе:

    sudo ls -alh /var/run
    ...
    srw-rw---- 1 root staff    0 Jan 22 10:09 docker.sock
    ....

3) При выполнении docker ps вас должно быть разрешение на доступ к файлу docker.sock

В этом случае просто выполните sudo usermod -aG staff [ME] чтобы добавить вас в нужную группу (обычно это docker ) (то же самое с php-fpm, где группа обычно представляет собой www-data).

У меня была проблема, я использовал pip install docker-compose . Я удалил его и использовал sudo pip install docker-compose . Теперь команда sudo docker-compose up работает.

Надеюсь, это поможет.

всякий раз, когда у вас возникают проблемы с аутентификацией при установке pip, лучше всего использовать pip install [package] —user, а не sudo, в некоторых случаях использование sudo вызовет проблемы аутентификации при выполнении самого приложения.

25 января 2017 г. в 17:38 oesah [email protected] написал:

У меня была проблема, я использовал pip install docker-compose. Я удалил его и использовал sudo pip install docker-compose. Теперь команда sudo docker-compose up работает.

Надеюсь, это поможет.

-
Вы получили это, потому что оставили комментарий.
Ответьте на это электронное письмо напрямую, просмотрите его на GitHub https://github.com/docker/compose/issues/1214#issuecomment-275255529 или отключите поток https://github.com/notifications/unsubscribe-auth/AMoEJ_g9iZOd2_BQUgaqgyk2mPLIv4DJeks5 .

в Fedora Linux
добавить своего пользователя в группу докеров
sudo usermod -aG docker username

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

Нет ничего лучше, чем рекомендовать официальный документ:

https://docs.docker.com/engine/installation/linux/linux-postinstall/

Проверь это.

Официальный документ - это всегда первое место, куда вам следует обратиться за помощью.

В итоге я добавил пользователя в группу докеров:

sudo groupadd docker
sudo usermod -aG docker $USER
sudo service docker restart

У меня все еще были проблемы с подключением при запуске docker ps от имени пользователя, что привело к следующей ошибке:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.27/containers/json: dial unix /var/run/docker.sock: connect: permission denied

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

sudo reboot now
... (wait for boot) ...
ssh server
docker ps

РЕДАКТИРОВАТЬ:

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

использование sudo тоже решило это для меня

Без выхода:

sudo usermod -aG docker $USER
su $USER -

Как уже упоминалось выше:

sudo usermod -aG docker $USER

Выйти.
Авторизоваться.
Готово.

У меня была такая же проблема, и в моем случае причина заключалась в том, что у меня были файлы в папке с Dokcerfile, к которым у меня не было прав доступа. После запуска chown все стало нормально работать.
Решение с usermod у меня не работает.

ОБНОВИТЬ
Это случилось со мной снова, и на этот раз решением было удалить все контейнеры докеров с помощью:

docker ps -aq | xargs docker rm

Собственно это проблема установки. Пожалуйста, обратитесь к официальной странице после установки. Решаю эту проблему с помощью документа.

Как сказал выше @ TrkiSF2 . После добавления пользователя в группу докеров вам необходимо выйти и снова войти в систему, чтобы они вступили в силу.

Получил отказ в разрешении при попытке подключиться к сокету демона Docker в unix: ///var/run/docker.sock: получить http: //%2Fvar%2Frun%2Fdocker.sock/v1.29/containers/json: dial unix /var/run/docker.sock: connect: в разрешении отказано

решение: # chmod -Rf 777 /var/run/docker.sock

Перезапуск решен после выполнения

sudo usermod -aG docker $ {USER}

Получил эту проблему на цифровой капле океана. Настройка дроплета для внутреннего управления ядром устранила эту проблему для меня https://www.digitalocean.com/community/tutorials/how-to-update-a-digitalocean-server-s-kernel#setting -up-the-droplet-for -внутреннее-ядро-управление

У меня была эта проблема с репозиторием кода, который в один момент строился отлично, а потом нет. У меня были другие репозитории на том же компьютере и в той же учетной записи, которые были созданы отлично, так что это не было проблемой групп или чего-то еще с конфигурацией системы. У меня не было установлено DOCKER_HOST env var. Я подозреваю, что эта ошибка может быть вызвана множеством причин, но в конечном итоге для меня это было правом root на артефакты сборки в каталоге репо. sudo chown -R все файлы в репо для учетной записи пользователя решили проблему для меня.

Я лично попробовал решение @cloojure , и оно сработало. Но только после того, как я добавил себя в группу докеров и повторно авторизовался. Часть повторного входа в систему есть

Я столкнулся с тем же сообщением об ошибке, и, как и ChrisPappalardo, это произошло из-за проблемы с правами доступа к файлу, а не с демоном. sudo chown -R на ассетах сборки исправил это.

Я получаю такое же сообщение об ошибке при запуске "docker-compose build".
Итак, я добавил команду sudo, и она отлично работает. (сборка $ sudo docker-compose)

это может быть другое решение:
sudo chmod 777 /var/run/docker.sock

@Farada изменение разрешений опасно; наличие доступа к Docker API эквивалентно корневому доступу на вашем компьютере; изменение разрешений на 777 дает любому пользователю root-доступ.

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

Если вы установили докер с помощью команды sudo, попробуйте sudo YOUR_COMMAND.

В моем случае Docker создавал папки и файлы в папке моего проекта всякий раз, когда я запускал контейнер (я использую тома для связывания всех источников и т. Д.).

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

Оказывается, эта ошибка возникает, когда Docker не может получить доступ к этим файлам, потому что при запуске сборки он запускается от имени пользователя, с которым вы выполнили команду. Когда он попадает в каталоги / файлы с root:root он освобождается и выдаёт общую ошибку ....is it running? когда он должен сказать permission denied in X, cannot continue .

В моем случае я просто добавил файлы, сгенерированные моим образом Docker, в .dockerignore и проблема была решена мгновенно.

В общем, мне дали несвязанную ошибку.

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

Я получаю это:

 docker-compose build
db uses an image, skipping
Building web
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.

Проблема заключалась в том, что некоторые файлы в контексте Dockerfile имели ограниченные разрешения, и это быстро исправлено sudo chown -R damo ./* .

Однако я бы сказал, что здесь действительно есть проблема с docker-compose - я должен был получить информативное сообщение об ошибке, в котором точно указывается, что он не удался из-за ошибки разрешений, а не из-за неоднозначной ошибки подключения, которая была отвлекающим маневром в в моем случае, поскольку я потратил время на то, чтобы возиться с самой службой демона докеров.

Я получал это несколько раз.

Для меня это не проблема с конфигурацией. Вместо этого кажется, что Docker умирает и останавливается, во время какого-то события я все еще не могу сказать, когда оно произойдет.

В любом случае, если моя интуиция верна, исправление может быть sudo service docker restart но, видимо, этого недостаточно.

В конце концов, единственное решение, которое работает, - это перезагрузка .

Демон докера привязывается к сокету Unix, а не к порту TCP. По умолчанию этот сокет Unix принадлежит пользователю root, и другие пользователи могут получить к нему доступ только с помощью sudo. Демон докера всегда запускается от имени пользователя root. Пост-установка Linux

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

напоминание: (не забудьте перезапустить сеанс или перезагрузить виртуальную машину)

  • При тестировании на виртуальной машине может потребоваться перезапустить виртуальную машину, чтобы изменения вступили в силу.
  • В настольной среде Linux, такой как X Windows, полностью выйдите из сеанса, а затем снова войдите в систему.

У меня такая же проблема. Как уже упоминалось, когда я запускал docker-compose с sudo, это сработало.

Привет, ребята, я столкнулся с той же проблемой, когда использую Fedora 26, а затем я нашел решение для Fedora 25, но оно работает для меня.

Вот фрагмент:

$ sudo groupadd docker && sudo gpasswd -a ${USER} docker && sudo systemctl restart docker
$ newgrp docker

ССЫЛКА: https://developer.fedoraproject.org/tools/docker/docker-installation.html

Надеюсь, это вам поможет, спасибо

sudo systemctl status docker.service -l очень полезен для поиска реальной проблемы.

У меня было то же самое, но только с docker-compose build . В конце концов, это была просто проблема с разрешением файла. Я создал файлы внутри контейнера, принадлежащего пользователю root, и он не смог собрать эти файлы. Я просто сделал sudo chown -R $USER . и он работает.

У меня была такая же ошибка при создании контейнера mysql после удаления моего предыдущего.
Причина в том, что у меня была папка с данными (для сохранения), которой владел пользователь в предыдущем контейнере.
Решением было удалить папку с данными. Предупреждение - вы потеряете свои данные. Если вы хотите сохранить свои данные, возможно, переместите папку данных или назначьте новых владельцев.

сделал трюк, добавив себя в группу
usermod -aG docker $ {USER}

перезагружаюсь и работает!

Для меня это было решено путем входа в режим администратора: sudo -s

Если это поможет!

Я получил то же сообщение об ошибке, используя имя изображения, содержащее символ «+». (Это произошло из-за того, что я называл свои изображения после идентификатора системы управления версиями.)

Например, docker-compose.yaml содержащий:

services:
  foobar:
    image: "foobar:a-b+c"
    ....

терпит неудачу с

Building foobar
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.

Но удаление «+» из имени изображения сработало.

@fabiopaiva Не уверен, что кто-то ответил вам, но сначала он должен быть sudo эксклюзивным, потому что любой пользователь, который может выполнить команду docker, может стать sudo на хосте .
Любой, у кого есть доступ к выполнению докера, может запустить простой докер, привязать всю файловую систему хоста и получить к ней доступ как root (т. Е. Теневые файлы для паролей или изменения прав для всей системы).
Поэтому вы должны быть очень осторожны с тем, кто может использовать эту команду.

Спасибо @Gronan , я плохо помню про эту
Но что касается вашего объяснения, если вы запускаете sudo, вы все равно передаете этот контроль.
Спасибо вам за разъяснение

Не нужен sudo.
Добавьте своего пользователя в группу докеров, докер
и перезапустите службу докеров, докер перезапуска службы или systemctl restart docker.service

Перезагрузка системы не требуется.

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

usermod -aG docker ${USER}
затем _reboot_.

Это связано с тем, что демон docker запускается как пользователь root, а docker-compose как обычный пользователь.

Три шага, чтобы исправить это:

  1. sudo group добавить докер
  2. sudo usermod -aG docker $ USER
  3. Перезагрузитесь, чтобы обновить изменения.

Подробнее в:
https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage -docker-as-a-non-root-user

Вместо перезагрузки вы можете просто ввести su - ${USER} . Я предполагаю, что это перезагружает текущего активного пользователя в Терминале.

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04

У меня это сработало без перезагрузки:

  1. Добавить группу докеров:
    sudo usermod -aG docker ${USER}
  2. Бежать
    id
  3. Если группа 'docker' не отображается в списке групп - выйдите из системы и войдите снова.

Моя проблема в том, что в моем контексте сборки докеров у меня были файлы, которые не принадлежали ни моему пользователю, ни моей группе. Например, я подключил папку в контексте сборки докеров к контейнеру mongo, поэтому эти файлы принадлежали пользователю и группе mongodb. Чтобы исправить это, я просто удалил эту папку и вместо этого использовал том, сгенерированный докером для моей службы mongodb, а затем я смог запустить docker-compose без sudo

Я могу подтвердить наблюдение @alexcdot : файлы в моем репозитории проектов принадлежали пользователю root (не знаю, как они туда попали). Их удаление устранило проблему. Теперь я могу запускать docker-compose без прав sudo.

Также подтверждаем решение @alexcdot и @ tbuss93 . У меня тоже сработало. Я думаю, что в таком случае ошибка должна быть более понятной и в идеале отображать проблемные файлы.

У меня была эта проблема сегодня для нового ноутбука Dev. Я решил это так
1) Остановить Докер

sudo service docker stop

если вы посмотрите на это разрешение файла, вы увидите, что без sudo вы не сможете получить доступ к демону Docker

sudo ls -la /var/run/docker.sock
srw-rw---- 1 root docker 0 Dec 21 19:16 /var/run/docker.sock

2) Удаляю этот docker.sock

sudo rm  /var/run/docker.sock

спасибо @rbahumi
3) я запускаю эту команду

sudo usermod -aG docker ${USER}

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

@ cooljl31 удаление сокета кажется ненужным, поскольку разрешения показывают, что члены группы докеров имеют доступ rw. Однако вам придется перезапустить докер и сеанс.

Однако это исправление, похоже, не связано с проблемой.

Это решило мои проблемы: https://docs.docker.com/install/linux/linux-postinstall/#manage -docker-as-a-non-root-user
Просто не забудьте выйти и снова войти в систему. Выполните команды от имени пользователя, которого вы хотите использовать в Docker.

sudo usermod -aG имя пользователя

затем выйдите из системы и войдите в систему, чтобы все заработало.

Сработало для меня как шарм.

Мне также пришлось запустить службу докеров вручную после новой установки docker-ce (17.12.0 ~ ce-0 ~ ubuntu) и docker-compose, чтобы сообщение об ошибке исчезло:

sudo service docker start

Следуя инструкциям, описанным в документации, я решил проблему с моей новой установкой Ubuntu 16.04.

Однако после применения этих изменений мне пришлось перезагрузить систему.

Используйте команду: sudo docker-compose up -d

если вы встретили:
$ docker-compose up
ОШИБКА: не удалось подключиться к демону Docker по адресу http + docker: // localunixsocket - он работает?

Если он находится в нестандартном месте, укажите URL-адрес в переменной среды DOCKER_HOST.

Вы должны проверить, принадлежит ли текущий логин к /var/run/docker.sock группе пользователей docker .
Попробуйте запустить Compose от имени sudo.

Чтобы решить эту проблему без sudo сделайте, как сказал @leoyuholo во втором комментарии, выйдите из системы и снова войдите.

Такое же сообщение об ошибке появляется при запуске докера.
Решается добавлением себя в группу пользователей docker

Попробуйте выполнить следующую команду, чтобы добавить себя в группу usermod -aG docker $ {USER}

Или вы можете запустить следующую команду, чтобы узнать, к каким группам вы принадлежите, $ USER

После этого выйдите из системы и снова войдите в систему, и он работает

ссылка на комментарий https://github.com/docker/compose/issues/1214#issuecomment -102246925

пс. это для людей вроде меня, которые пропускают первые пару комментариев -_-

Просто потому, что мне нужно много времени, чтобы переосмыслить это, и это первое, на что я наткнулся в Google. Нет ничего плохого в моих пользовательских разрешениях на моем ноутбуке. Проблема заключалась в правах доступа к файлам в одной из подключенных папок. Если вы либо исправите разрешения, чтобы вам не требовался root для доступа к ним, либо удалите их (в моем случае это кешированные активы для рельсов), он успешно пройдет.

Настоящая проблема заключается в том, что сообщение об ошибке не сообщает вам, в чем конкретная проблема при сборке с помощью docker-compose.

Я тоже встретил проблему. Это проблема доступа пользователя.
Я решил это, установив docker-compose в корневом режиме и запустив docker-compose также в корневом режиме.

@zjhken - это не совсем решение, а скорее обходной путь.
Что-то не так с правами доступа к файлам в папке проекта или разрешениями вашей группы. См. @Alexcdot и мои наблюдения для первого случая и попробуйте sudo usermod -aG docker <your username> последующим повторным входом в систему для последнего.

@ tbuss93 ты прав. Я использую ваше решение, чтобы решить эту проблему. Оно работает. Возможно, это лучшее решение.

write => информация о докере sudo

Просто добавьте sudo перед командой, которую вы пытаетесь запустить!

Итак, в моем случае пользователь gitlab_ci_multi_runner является частью группы докеров. Так что это не моя проблема:

groups $USER
   gitlab_ci_multi_runner : gitlab_ci_multi_runner docker

Но по какой-то причине я все еще иногда получаю (обратите внимание, что это иногда так): Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

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

Благодаря!

Народ, сначала прошу прощения за мой английский. У меня такая же проблема, но я понимаю, что это происходит на консоли внутри kde, но когда я запускаю в терминале crt alt f1, мне не нужно использовать sudo !. У меня уже есть $ USER в группе докеров. Надеюсь, вы меня понимаете. - спасибо

Просто беги;

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

Я тоже столкнулся с проблемой: «Не удается подключиться к демону Docker в unix: ///var/run/docker.sock». Демон докера запущен? ' Позже я заметил следующее.

[ ec2-user @ ip-172-28-6-201 docker-elk] $ который docker-compose
/ USR / местные / бен / докер-составить
[ ec2-user @ ip-172-28-6-201 docker-elk] $ какой докер
/ USR / bin / докер-составить

Поскольку двоичный файл docker-compose находится внутри / usr / local, я смог выполнить команду docker-compose без sudo. Чтобы выполнить команду docker, мне нужен был доступ sudo.

Я исправил, используя следующие команды.

cp / usr / local / bin / docker-compose / usr / bin / docker-compose
chmod + x / usr / bin / докер-составить
Судо RM / USR / местные / бен / докер-составить

Теперь убедитесь, что для выполнения команды docker-compose требуется sudo.
После выполнения вышеуказанных шагов у меня работает команда docker-compose.

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

Для меня это работает.
[ ec2-user @ ip-172-31-7-179 docker-elk] $ sudo docker-compose up -d

Мои версии docker и docker compose.

[ ec2-user @ ip-172-31-7-179 docker-elk] $ sudo docker version
Клиент:
Версия: 17.06.2-ce
Версия API: 1.30
Версия Go: go1.8.4
Git коммит: 3dfb8343b139d6342acfd9975d7f1068b5b1c3d3
Построен: 10 ноя 2017, пт, 00:50:37
ОС / Arch: Linux / amd64

Сервер:
Версия: 17.06.2-ce
Версия API: 1.30 (минимальная версия 1.12)
Версия Go: go1.8.4
Git commit: 402dd4a / 17.06.2-ce
Построен: Пт 10 ноя 2017, 00:51:08
ОС / Arch: Linux / amd64
Экспериментальный: ложь
[ ec2-user @ ip-172-31-7-179 docker-elk] $ sudo docker-compose версия
docker-compose версия 1.21.2, сборка a133471
версия docker-py: 3.4.0
Версия CPython: 2.7.12
Версия OpenSSL: OpenSSL 1.0.2k-fips 26 января 2017 г.

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

Я могу надежно создать это сообщение с помощью проекта со следующей структурой:

├── docker-compose.yml
├── Dockerfile
└── объемы

Если объемы превышает определенный размер, при выполнении сборки docker-compose я получаю следующую ошибку:

  • > ОШИБКА: не удалось подключиться к демону Docker по адресу http + docker: // localunixsocket - он работает? Если он находится в нестандартном месте, укажите URL-адрес в переменной среды DOCKER_HOST.

Запуск команды с sudo начинает создание образа, но приятно не полагаться на sudo для автоматизации.

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

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

cd / var / run
sudo chmod 777 docker.sock
запуск докера службы sudo
Докер запускает привет-мир
Привет из Докера!
Это сообщение показывает, что ваша установка работает правильно.

Решил проблему :)

решено с помощью sudo

Если все сказанное здесь не работает, переустановите докер. У меня это сработало.

По моему опыту, нет необходимости перезагружать машину, что полезно, если вы работаете в производственной среде - после sudo usermod -aG docker $USER выйдите из системы и снова войдите в систему. Это должно передать назначение новой группы пользователей любой программе или приложению, которое это нужно.

В противном случае ответ @praveenbaliga на 3 комментария выше моего комментария будет работать в крайнем случае, если разрешения были неправильными с самого начала или вы находитесь в промежуточной среде, но может нарушить политики безопасности, если вы работаете в усиленном производстве окружающая обстановка. Вы действительно хотите, чтобы члены группы root и docker имели доступ к docker.sock а chmod 777 предоставит доступ rwx каждому пользователю.

/usr/lib/python2.7/dist-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.23) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
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.

У меня была такая же проблема, только сейчас при запуске $ sudo docker-compose . Сначала я стал root, выполнив $ sudo su , а затем запустил docker-compose как обычно.

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

https://techoverflow.net/2017/03/01/solving-docker-permission-denied- while-trying-to-connect-to-the-docker-daemon-socket/

Такое же сообщение об ошибке появляется при запуске докера.
Решается добавлением себя в группу пользователей docker

Попробуйте выполнить следующую команду, чтобы добавить себя в группу
usermod -aG docker ${USER}

Или вы можете запустить следующую команду, чтобы узнать, к каким группам вы принадлежите
groups $USER

А затем перезагрузите компьютер

Эта ветка полезна.

Я вошел в ту же проблему. Напротив, я добавляю sudo в начало командной строки, и это решается!

Просто беги;

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

Этот сработал для меня. Не уверен, почему добавление $ USER в группу докеров не решило эту проблему.
Изменить: оказывается, служба докеров восстанавливает /var/run/docker.sock каждой перезагрузке. Вам нужно повторять указанный трюк каждый раз при перезапуске докера (не так уж много, а?)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги