Все перепробовал в этой ветке: 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
Есть идеи? Я также пробовал установить фиг, которая сразу работает без проблем ...
Такое же сообщение об ошибке появляется при запуске докера.
Решается добавлением себя в группу пользователей 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)
Это не проблемы, которые можно решить с помощью композиции.
Возникла проблема с 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 -внутреннее-ядро-управление
Поступая так, решаю мою проблему:
https://techoverflow.net/2017/03/01/solving-docker-permission-denied- while-trying-to-connect-to-the-docker-daemon-socket/
У меня была эта проблема с репозиторием кода, который в один момент строился отлично, а потом нет. У меня были другие репозитории на том же компьютере и в той же учетной записи, которые были созданы отлично, так что это не было проблемой групп или чего-то еще с конфигурацией системы. У меня не было установлено 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
напоминание: (не забудьте перезапустить сеанс или перезагрузить виртуальную машину)
У меня такая же проблема. Как уже упоминалось, когда я запускал 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 как обычный пользователь.
Три шага, чтобы исправить это:
Подробнее в:
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
У меня это сработало без перезагрузки:
sudo usermod -aG docker ${USER}
id
Моя проблема в том, что в моем контексте сборки докеров у меня были файлы, которые не принадлежали ни моему пользователю, ни моей группе. Например, я подключил папку в контексте сборки докеров к контейнеру 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 я получаю следующую ошибку:
Запуск команды с 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
как обычно.
используйте эту ссылку, чтобы решить проблему, поскольку она работает для меня. У меня была такая же проблема, но теперь все работает нормально
Такое же сообщение об ошибке появляется при запуске докера.
Решается добавлением себя в группу пользователей dockerПопробуйте выполнить следующую команду, чтобы добавить себя в группу
usermod -aG docker ${USER}
Или вы можете запустить следующую команду, чтобы узнать, к каким группам вы принадлежите
groups $USER
А затем перезагрузите компьютер
Эта ветка полезна.
Я вошел в ту же проблему. Напротив, я добавляю sudo в начало командной строки, и это решается!
Просто беги;
sudo chown $USER:docker /var/run/docker.sock
Этот сработал для меня. Не уверен, почему добавление $ USER в группу докеров не решило эту проблему.
Изменить: оказывается, служба докеров восстанавливает /var/run/docker.sock
каждой перезагрузке. Вам нужно повторять указанный трюк каждый раз при перезапуске докера (не так уж много, а?)
Самый полезный комментарий
Для меня тоже подходит команда sudo