Я пытаюсь узнать о Docker , но продолжаю получать загадочные (для меня) сообщения об ошибках.
Возможно, самый простой пример этого - попытаться напечатать версию установленного Docker:
$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.16/version:
dial unix /var/run/docker.sock: no such file or directory.
Are you trying to connect to a TLS-enabled daemon without TLS?
Я только что прочитал руководство пользователя и точно следовал каждому шагу, поэтому я удивлен, что получил это сообщение ... Что мне теперь делать?
Я только заметил, что если я не использую, sudo
я не получаю ошибку:
$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8
Конечно, это не решение, так как мне может понадобиться sudo
где-нибудь в будущем ...
Я только что нашел другую страницу с надписью « Если вы используете OS X, то вы не должны использовать sudo
». Я не знаю, имеют ли они в виду только этот пример или вообще.
boot2docker
), хотя OS X явно не упоминается в вопросе или тегах. Если кого-то интересует общий ответ, см. Мой ответ.Ответы:
Для меня бег
$(boot2docker shellinit 2> /dev/null)
исправил проблему.Это запускает вывод
boot2docker shellinit
команды (триset -x ...
строки) в текущем терминальном сеансе, что позволяетdocker
команде узнать, где найти виртуальную машину boot2docker.Добавление
$(boot2docker shellinit 2> /dev/null)
в конец вашего~/.bash_profile
файла будет гарантировать, чтоdocker
команда настроена, каждый раз, когда вы открываете свой терминал.Для людей , использующих моллюск:
boot2docker shellinit ^ /dev/null | source
.Обратите внимание, что
2> /dev/null
(и эквивалент рыбы^ /dev/null
) не являются обязательными. Как предложил @ pablo-fernandez, это скрываетWriting ..
черты.источник
boot2docker start
перед запуском init init.Я получал ту же ошибку на MacOS с sudo и без него.
Я решил это с:
PS: спасибо Алану. Я узнал, что этот подход рекомендуется в их официальной документации .
PS2: иногда
boot2docker init
может потребоваться перед запуском двух команд (спасибо Аарон).источник
В моем случае (Linux Mint 17) я делал разные вещи, и я не уверен, какие из них абсолютно необходимы.
Я добавил недостающие пакеты Ubuntu:
Пользователь был добавлен в группу
docker
:Запущен демон (openSUSE просто нуждается в этом)
Спасибо \ Attribution
Спасибо Усману Исмаилу , потому что, возможно, это была последняя вещь ...
Спасибо также github @ MichaelJCole за решение, которое сработало для меня, потому что я не проверял демона, когда читал комментарий Усмана.
GitHub комментарий :
Спасибо посту fredjean.net за то, что он заметил недостающие пакеты и забыл о стандартных инструкциях по установке Ubuntu, а Google о других способах.
Благодаря комментарию brettof86 об openSUSE
источник
sudo adduser $USER docker
. Трюк, чтобы заставить его вступить в силу на текущей оболочке, былcurgroup=$(id -gn) && newgrp docker && newgrp $curgroup
адаптирован с superuser.com/questions/272061/…Подчеркивающая проблема проста - отсутствие разрешения на
/var/run/docker.sock
unix доменный сокет.Из главы о параметрах сокета Daemon в справочнике по командной строке Docker для Docker 1.6.0:
Шаги, необходимые для предоставления прав пользователям, хорошо описаны в инструкциях по установке Docker для Fedora :
Выйдите и войдите в систему, чтобы изменения вступили в силу. Обратите внимание, что пакеты Docker некоторых дистрибутивов Linux (Ubuntu) уже размещены
/var/run/docker.sock
вdocker
группе, поэтому первые два из вышеперечисленных шагов не нужны.В случае с OS X
boot2docker
ситуация иная; демон Docker работает внутри виртуальной машины, поэтомуDOCKER_HOST
для этой виртуальной машины должна быть задана переменная среды, чтобы клиент Docker мог найти демон Docker. Это делается путем запуска$(boot2docker shellinit)
в оболочке.источник
boot2docker shellinit
другими командами заключается в том, что эта команда сама по себе не вносит никаких изменений, а только генерирует (печатает) команды, которые необходимо выполнить самостоятельно. Вы можете запуститьboot2docker shellinit
сначала, а затем вручную скопировать и запустить каждую команду из ее вывода. Все команды легче выполнять, выполняяboot2docker shellinit
подпроцесс (с$()
синтаксисом), потому что таким образом каждая строка вывода автоматически запускается как команда оболочки. См. Docs.docker.com/installation/mac/#from-your-command-line, где это показано подробно.sudo service docker status
. На моем Ubuntu 14.04 он не работал после установки, что вызвало ошибку.Убедитесь, что демон Docker работает:
Это исправило это для меня!
источник
sudo service docker start
для меняsystemctl enable docker.service
иsystemctl start docker.service
для пользователей system.d linux (Arch в моем случае)sudo service docker restart
для меня$ docker version
Запрос команды является внутренним для исполняемого файла Docker и не работающий демон / службы.$ docker images or $ docker ps or $ docker pull centos
являются командами, которые отправляют запросы работающему демону / службе docker.docker
или вы использовалиsudo
до команды, например$ sudo docker images
, это не требует подключения TLS.Посетите страницу документации Docker. Защитите сокет демона Docker .
Прокрутите немного к вершине и найдите
warning section
для ясности.источник
sudo usermod -a -G docker {username}
Вам нужно будет сделать:
Следующие настройки устранили проблему:
источник
eval "$(boot2docker shellinit)"
Возможно, у вас еще нет прав доступа к файлу. Это случилось со мной после того, как я добавил себя в
docker
группу, используяно еще не выход.
Чтобы решить эту проблему, вы можете либо повторно войти в систему, либо использовать
sg docker "docker <subcommand> ..."
перед выходом из системы.Если вы в группе
docker
дюйма/etc/group
, вы должны быть в состоянии запустить его без ввода пароля.https://dingyichen.wordpress.com/2015/02/05/docker-dial-unix-varrundocker-sock-no-such-file-or-directory-are-you-trying-to-connect-to-a- TLS с поддержкой-демон-без ДУС /
источник
В Ubuntu после установки lxc-docker вам нужно добавить своего пользователя в группу пользователей docker :
Это из-за прав доступа к файлу сокета:
НЕ ЗАПУСКАЙТЕ usermod БЕЗ «-a», как предложено в одном из других комментариев, иначе он сотрет настройку дополнительных групп и просто покинет группу «docker»
Вот что произойдет:
источник
TLDR : Это заставило мою группу разработчиков Python преодолеть эту проблему, когда я руководил клиникой по установке докера, и большинство пользователей работали на OS X:
запустите
export
команды, которые выдает результат, затемдолжен сказать вам, что это работает.
Контекст (что привело нас к проблеме)
Я руководил клиникой по установке докера, и у большинства участников была OS X, и мы столкнулись с этой проблемой, и я преодолел ее на нескольких машинах. Вот шаги, которым мы следовали:
Сначала мы установили homebrew (да, у некоторых посетителей его не было):
Затем мы получили cask, который мы использовали для установки virtualbox, а затем использовали brew для установки docker и boot2docker (все это требуется для OS X). Не используйте sudo для brew. :
Решение
Это было, когда мы столкнулись с проблемой, которую задал задающий вопрос. Следующее исправило это. Я понимаю, что это
init
была разовая сделка, но вам, вероятно, придется запускатьсяup
каждый раз, когда вы запускаете Docker:Затем, когда
up
был запущен, он дает несколькоexport
команд. Скопируйте и вставьте их.Наконец
docker info
должен сказать вам, что он правильно установлен.Демо
Остальные команды должны продемонстрировать это. (в Ubuntu Linux мне потребовалось sudo.)
Тогда вы должны находиться на корневой оболочке в контейнере:
Вернемся к вашему нативному пользователю bash:
Найдите примерно 12-значный шестнадцатеричный (0-9 или af) идентификатор в поле «Идентификатор контейнера», например
456789abcdef
. Затем вы можете зафиксировать свое изменение и дать ему какое-нибудь описательное имя, напримерdescriptivename
:источник
Все, что вам нужно для запуска Docker в Linux Ubuntu / Mint:
При желании вам может потребоваться установить две дополнительные зависимости, если вышеперечисленное не работает:
источник
sudo service docker start
решил эту проблему на моем Ubuntu 14.04.Я попробовал решения здесь, и boot2docker не работал.
Мое решение: удалить boot2docker на Mac, установить виртуальную машину Centos 7 в VirtualBox и работать с Docker внутри этой виртуальной машины.
источник
Для меня сработали следующие шаги:
docker run hello-world
завершился неудачно с этой ошибкой, как в вопросе, но запускsudo docker run hello-world
работал.docker
группуsudo adduser user docker
. Затем вы должны перезагрузить компьютер или использовать егоsu - user
(проверьте, используяgroups
команду, если находитесь вdocker
группе).После этого
hello-world
начал работать.Мой ответ основан на том, как я могу использовать докер без sudo? что объясняет, что пошло не так.
источник
Для чего бы это ни стоило, я попробовал все решения в этом и в этом смежном вопросе, и никто не решил мою проблему, пока я не удалил и не переустановил VirtualBox . Этот процесс обновил VirtualBox с версии 4.2.16 до 4.3.22 (мой предыдущий лежал в системе неиспользованным в течение нескольких месяцев).
Тогда
boot2docker
иdocker
работал без каких-либо других настроек.источник
У меня такая же проблема. Простое
service docker restart
решило проблему.источник
Демон Docker связывается с сокетом Unix вместо порта TCP. По умолчанию этот сокет Unix принадлежит пользователю root, и другие пользователи могут получить к нему доступ только через sudo. Демон Docker всегда запускается от имени пользователя root.
Выйдите из системы и снова войдите в нее, чтобы вновь оценить членство в группе.
Источник: Управление Docker от имени пользователя без полномочий root
источник
У меня была та же проблема, и я пытался ее исправить, внося поправки в файл .bash_profile, входя и выходя без всякой удачи. В итоге перезапуск моей машины исправил.
источник
Убедитесь, что есть
в твоем
файл.
источник
Я столкнулся с той же проблемой, когда создавал образы Docker из Jenkins. Просто добавьте пользователя в
docker
группу, а затем перезапустите сервисы Docker, и в моем случае мне пришлось перезапустить сервисы Jenkins.Это была ошибка, которую я получил:
источник
Другая возможная причина заключается в том, что визуализация ЦП вашего BIOS не включена. Иди и включи его первым!
источник