Я пытаюсь подключиться к демону с поддержкой TLS без TLS?
Я пытаюсь узнать о Docker, но я продолжаю получать загадочные (для меня) сообщения об ошибках.
Возможно, самым простым примером этого является попытка распечатать версию Docker I:
$ 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
". Я не знаю, имеют ли они значение только для этого примера или вообще.
Ответы
Ответ 1
Для меня проблема с запуском $(boot2docker shellinit 2> /dev/null)
устранена.
Выполняет вывод команды boot2docker shellinit
(три строки set -x ...
) в текущем сеансе терминала, который позволяет команде docker
знать, где найти виртуальную машину boot2docker.
Добавление $(boot2docker shellinit 2> /dev/null)
в конец вашего файла ~/.bash_profile
гарантирует, что команда docker
настроена каждый раз, когда вы открываете терминал.
Для людей, использующих оболочку Fish: boot2docker shellinit ^ /dev/null | source
.
Обратите внимание, что 2> /dev/null
(и эквивалент Fish ^ /dev/null
) являются необязательными. Как и @pablo-fernandez, это скрывает строки Writing ..
.
Ответ 2
Я получал ту же ошибку в MacOS с sudo и без нее.
Я решил это с помощью
boot2docker start
$(boot2docker shellinit)
P.S.: Благодаря Алану. Я узнал, что этот подход рекомендуется в их официальную документацию.
P.S.2: Иногда перед запуском двух команд может потребоваться boot2docker init
(спасибо Aaron).
Ответ 3
В моем случае (Linux Mint 17) я делал разные вещи, и я не уверен, какие из них абсолютно необходимы.
Я включил отсутствующие пакеты Ubuntu:
$ sudo apt-get install apparmor lxc cgroup-lite
Пользователь добавлен в группу docker
:
$ sudo usermod -aG docker ${USER}
Начальный демон (openSUSE просто нуждается в этом)
$ sudo docker -d
Спасибо \Attribution
Спасибо Usman Ismail, потому что, возможно, это была последняя вещь...
Глупый вопрос, но вы начали демон docker? - Усман Исмаил 17 дек 14 в 15:04
Спасибо также github @MichaelJCole для решения, которое сработало для меня, потому что я не проверял демона, когда читал Usman комментарий.
Комментарий GitHub:
sudo apt-get install apparmor lxc cgroup-lite
sudo apt-get install docker.io
# If you installed docker.io first, you'll have to start it manually
sudo docker -d
sudo docker run -i -t ubuntu /bin/bash
Благодаря сообщение fredjean.net, чтобы заметить недостающие пакеты и забыть о инструкциях по установке Ubuntu по умолчанию и google о других способах
Оказывается, пакеты cgroup-lite и lxc по умолчанию не установлены в Linux Mint. Установка обоих позволила мне запустить bash в базовом изображении, а затем создать и запустить мое изображение.
Благодаря brettof86 комментарий о openSUSE
Ответ 4
Проблема подчеркивания проста - отсутствие разрешения на /var/run/docker.sock
доменное имя unix.
Из опции сокета Daemon глава ссылки командной строки Docker для Docker 1.6.0:
По умолчанию сокет домена unix (или сокет IPC) создается на /var/run/docker.sock
, , требующий либо права root, либо докеры членство в группе.
Шаги, необходимые для предоставления прав пользователям, хорошо описаны в Docker инструкции по установке для Fedora:
Предоставление пользователям прав доступа к Docker
Инструмент командной строки docker связывается с процессом демона докеров через файл сокета /var/run/docker.sock
принадлежит root:root
. Хотя он рекомендовал используйте sudo для команд docker, если пользователи хотят избежать этого, администратор может создать группу докеров, иметь ее /var/run/docker.sock
и добавьте пользователей в эту группу.
$ sudo groupadd docker
$ sudo chown root:docker /var/run/docker.sock
$ sudo usermod -a -G docker $USERNAME
Выйдите из системы и войдите в систему для изменений выше, чтобы вступить в силу.
Обратите внимание, что пакеты Docker некоторых дистрибутивов Linux (Ubuntu) уже размещают /var/run/docker.sock
в группе docker
, делая ненужным два первых шага.
В случае OS X и boot2docker
ситуация другая; демон Docker запускается внутри виртуальной машины, поэтому переменная среды DOCKER_HOST
должна быть установлена на эту виртуальную машину, чтобы клиент Docker мог найти демона Docker. Это делается путем запуска $(boot2docker shellinit)
в оболочке.
Ответ 5
Убедитесь, что демон Docker запущен:
service docker start
Это исправило это для меня!
Ответ 6
- Docker называет себя самодостаточным временем выполнения для контейнеров Linux.
В простых терминах он действует как сервер и клиент.
- Запрос команды
$ docker version
является внутренним для исполняемого файла Docker, а не для запуска демона/службы.
-
$ docker images or $ docker ps or $ docker pull centos
- это команды, которые отправляют запросы на демон docker/service running.
- Докер по умолчанию поддерживает подключения TLS к своему демону/службе.
- Только если пользователь, с которым вы вошли в систему, является частью группы пользователей
docker
, или вы использовали sudo
перед командой, например. $ sudo docker images
, не требует ли TLS-подключения.
Посетите страницу документации Docker Защитите сокет демона Docker.
Прокрутите немного вверх и найдите warning section
для ясности.
Ответ 7
Вам нужно будет сделать:
$boot2docker init
$boot2docker start
Следующие настройки исправили проблему:
$export DOCKER_HOST=tcp://192.168.59.103:2376
$export DOCKER_CERT_PATH=/Users/{profileName}/.boot2docker/certs/boot2docker-vm
$export DOCKER_TLS_VERIFY=1
Ответ 8
Возможно, у вас еще нет разрешения на файл.
Это случилось со мной после того, как я добавил себя в группу docker
, используя
sudo gpasswd -a user 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-enabled-daemon-without-tls/
Ответ 9
На Ubuntu после установки lxc-docker вам нужно добавить своего пользователя в группу docker:
sudo usermod -a -G docker myusername
Это из-за разрешений файла сокета:
srw-rw---- 1 root docker 0 Mar 20 07:43 /var/run/docker.sock
НЕ ЗАПУСКАЙТЕ usermod БЕЗ "-a" , как это предлагается в одном из других комментариев, или он уничтожит настройки ваших дополнительных групп и просто оставит группу "докер"
Вот что произойдет:
➜ ~ id pawel
uid=1000(pawel) gid=1000(pawel) groups=1000(pawel),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare),998(docker)
➜ ~ usermod -G docker pawel
➜ ~ id pawel
uid=1000(pawel) gid=1000(pawel) groups=1000(pawel),998(docker)
Ответ 10
TL;DR. Это вызвало мою группу ответов на Python после этой проблемы, когда я запускал клинику по установке докера, и большинство пользователей были в OS X:
boot2docker init
boot2docker up
запустите команды export
, которые выводит результат, затем
docker info
должен сказать вам, что это работает.
Контекст (что привело нас к проблеме)
Я возглавил клинику по установке докера, и у большинства участников была OS X, и мы столкнулись с этой проблемой, и я преодолел ее на нескольких машинах. Здесь мы предприняли следующие шаги:
Сначала мы установили homebrew (да, у некоторых участников этого не было):
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Затем мы получили бокс, который мы использовали для установки virtualbox, а затем использовали brew для установки docker и boot2docker (все необходимое для OS X) Don ' t используйте sudo для brew.:
brew install caskroom/cask/brew-cask
brew cask install virtualbox
brew install docker
brew install boot2docker
Решение
Это было, когда мы столкнулись с проблемой, которую здесь получил ассер. Следующее зафиксировано. Я понимаю, что init
была разовой сделкой, но вам, вероятно, придется запускать up
каждый раз, когда вы запускаете докер:
boot2docker init
boot2docker up
Затем, когда up
запущен, он дает несколько команд export
. Скопируйте и вставьте их.
Наконец, docker info
должен сказать вам, что он правильно установлен.
Демонстрация
Остальные команды должны продемонстрировать это. (на Ubuntu linux мне нужно sudo.)
docker run hello-world
docker run -it ubuntu bash
Затем вы должны находиться в корневой оболочке в контейнере:
apt-get install nano
exit
Вернуться к своему родному пользователю bash:
docker ps -l
Найдите двенадцатизначный шестнадцатеричный (0-9 или a-f) идентификатор в разделе "Идентификатор контейнера", например. 456789abcdef
. Затем вы можете совершить свое изменение и называть его некоторым описательным именем, например descriptivename
:
docker commit 456789abcdef descriptivename`
Ответ 11
Все, что вам нужно для запуска Docker на Linux Ubuntu/Mint:
sudo apt-get -y install lxc
sudo gpasswd -a ${USER} docker
newgrp docker
sudo service docker restart
Возможно, вам может потребоваться установить две дополнительные зависимости, если вышеуказанное не работает:
sudo apt-get -y install apparmor cgroup-lite
sudo service docker restart
Ответ 12
Я попробовал решения здесь, и boot2docker не работал.
Мое решение: Удалите boot2docker на Mac, установите виртуальную машину Centos 7 в VirtualBox и работайте с Docker внутри этой виртуальной машины.
Ответ 13
Для меня были выполнены следующие шаги:
- Я заметил, что запуск
docker run hello-world
завершился неудачей с этой носовой ошибкой, как в вопросе, но работает sudo docker run hello-world
.
- Я добавил своего текущего пользователя в группу
docker
, sudo adduser user docker
. Затем вы должны перезагрузить компьютер или использовать su - user
(проверьте с помощью команды groups
, если они находятся в группе docker
).
После этого начал работать hello-world
.
Мой ответ основан на Как использовать докер без sudo?, который объясняет, что не так.
Ответ 14
Для чего это стоит, я пробовал все решения в этом вопросе и в этом связанном вопросе, и никто не разрешил мою проблему до тех пор, пока я не удалил и не установил VirtualBox. Этот процесс обновил VirtualBox с версии 4.2.16 до 4.3.22 (мой предыдущий один не использовался в системе в течение нескольких месяцев).
Затем boot2docker
и docker
работали без каких-либо других настроек.
Ответ 15
У меня была та же проблема. Простой service docker restart
решил проблему.
Ответ 16
Убедитесь, что есть
127.0.0.1 localhost
в
`/etc/hosts `
файл.
Ответ 17
У меня была такая же проблема, и я попытался исправить это, исправляя файл .bash_profile, входе и выходе без ведома. В конце концов, перезагрузка моей машины исправила его.
Ответ 18
Я столкнулся с той же проблемой, когда я создавал изображения Docker у Дженкинса. Просто добавьте пользователя в группу docker
, а затем перезапустите службы Docker, и в моем случае мне пришлось перезапустить службы Jenkins.
Это была ошибка, которую я получил:
http:///var/run/docker.sock/v1.19/build?cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&memory=0&memswap=0&rm=1&t=59aec062a8dd8b579ee1b61b299e1d9d340a1340: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
FATAL: Failed to build docker image from project Dockerfile
java.lang.RuntimeException: Failed to build docker image from project Dockerfile
Solution:
[[email protected] ssh]# groupadd docker
[[email protected] ssh]# gpasswd -a jenkins docker
Adding user jenkins to group docker
[[email protected] ssh]# /etc/init.d/docker restart
Stopping docker: [ OK ]
Starting docker: [ OK ]
[[email protected] ssh]# /etc/init.d/jenkins restart
Shutting down Jenkins [ OK ]
Starting Jenkins [ OK ]
[[email protected] ssh]#
Ответ 19
Другая возможная причина заключается в том, что ваша визуализация процессора BIOS не включена. Идите и включите его первым!