Я пытаюсь подключиться к демону с поддержкой 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 не включена. Идите и включите его первым!