[docker] Я пытаюсь подключиться к демону с поддержкой TLS без TLS?



Answers

Я получал ту же ошибку на MacOS с sudo и без нее.

Я решил это с помощью:

boot2docker start
$(boot2docker shellinit)

PS: Спасибо Алану. Я узнал, что этот подход рекомендуется в их официальной документации .

PS2: Иногда перед запуском двух команд может потребоваться boot2docker init (спасибо Aaron).

Question

Я пытаюсь узнать о 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. Docker называет себя самодостаточным временем выполнения для контейнеров Linux. Проще говоря, он действует как сервер и клиент.
  2. Запрос командной $ docker version является внутренним для исполняемого файла Docker, а не для запуска демона / службы.
  3. $ docker images or $ docker ps or $ docker pull centos - это команды, которые отправляют запросы демона-докера / службы.
  4. Docker по умолчанию поддерживает TLS-подключения к своему демону / службе.
  5. Только если пользователь, с которым вы вошли в систему, является частью docker группы пользователей, или вы использовали sudo перед командой, например, $ sudo docker images , не требует ли TLS-подключения.

Перейдите на страницу документации Docker. Защитите разъем демона Docker .

Прокрутите немного вверх и найдите warning section для ясности.




Возможно, у вас еще нет разрешения на файл. Это случилось со мной после того, как я присоединился к группе 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/ с 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/




Я столкнулся с той же проблемой, когда создавал 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:

[root@Jenkins ssh]# groupadd docker
[root@Jenkins ssh]# gpasswd -a jenkins docker
Adding user jenkins to group docker
[root@Jenkins ssh]# /etc/init.d/docker restart
Stopping docker:                                           [  OK  ]
Starting docker:                                           [  OK  ]
[root@Jenkins ssh]# /etc/init.d/jenkins restart
Shutting down Jenkins                                      [  OK  ]
Starting Jenkins                                           [  OK  ]
[root@Jenkins ssh]#



Я попробовал решения здесь, и boot2docker не работал.

Мое решение: удалить boot2docker на Mac, установить виртуальную машину Centos 7 в VirtualBox и работать с Docker внутри этой виртуальной машины.




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




TLDR : Это привело к тому, что моя группа встреч в 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)"

Затем мы получили бочку, которую мы использовали для установки виртуального бокса, а затем использовали пиво для установки докеров и boot2docker (все необходимое для OS X). Не используйте sudo для варева. :

brew install caskroom/cask/brew-cask
brew cask install virtualbox
brew install docker
brew install boot2docker

Решение

Это было тогда, когда мы столкнулись с проблемой, которую получил здесь искатель. Следующее зафиксировано. Я понимаю, что init был init сделкой, но вам, вероятно, придется запускать каждый раз, когда вы начинаете докер:

boot2docker init
boot2docker 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 или af) идентификатор в разделе «Идентификатор контейнера», например 456789abcdef . Затем вы можете передать свое изменение и называть его некоторым описательным именем, например descriptivename :

docker commit 456789abcdef descriptivename`



Проблема подчеркивания проста - отсутствие разрешения на /var/run/docker.sock unix domain socket.

Из chapter опции разъема Daemon ссылки на командную строку Docker для Docker 1.6.0:

По умолчанию в /var/run/docker.sock создается сокет домена unix (или сокет IPC), требующий либо права root, либо членство в группе /var/run/docker.sock .

Шаги, необходимые для предоставления прав пользователям, хорошо описаны в инструкциях по установке Docker для Fedora :

Предоставление пользователям прав доступа к Docker

Инструмент командной строки docker связывается с процессом демона /var/run/docker.sock через файл сокета /var/run/docker.sock принадлежащий root:root . Хотя рекомендуется использовать sudo для команд docker, если пользователи хотят этого избежать, администратор может создать группу /var/run/docker.sock , иметь ее /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 в группе /var/run/docker.sock что делает первые два из вышеуказанных шагов ненужными.

В случае OS X и boot2docker ситуация другая; демон Docker запускается внутри виртуальной машины, поэтому DOCKER_HOST среды DOCKER_HOST должна быть установлена ​​на эту виртуальную DOCKER_HOST чтобы клиент Docker мог найти демона Docker. Это делается путем запуска $(boot2docker shellinit) в оболочке.




Для чего это стоит, я пробовал все решения в этом вопросе и в этом связанном вопросе, и никто не разрешил мою проблему до тех пор, пока я не удалил и не установил VirtualBox . Этот процесс обновил VirtualBox с версии 4.2.16 до 4.3.22 (мой предыдущий один не использовался в системе в течение нескольких месяцев).

Затем boot2docker и docker работали без каких-либо других настроек.




Related



Tags

docker docker