tutorial hub compose community docker

docker - hub - ¿Estoy intentando conectarme a un demonio habilitado para TLS sin TLS?



docker tutorial (20)

Estoy tratando de aprender sobre Docker , pero sigo recibiendo mensajes de error crípticos (para mí).

Posiblemente el ejemplo más simple de esto es intentar imprimir la versión de Docker que instalé:

$ 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?

Acabo de leer la guía del usuario y seguir cada paso exactamente, así que me sorprende que reciba este mensaje ... ¿Qué debo hacer ahora?

Acabo de notar que si no uso sudo no obtengo el error:

$ 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

Por supuesto, esta no es una solución, ya que es posible que necesite usar sudo algún lugar del camino ...

Acabo de encontrar otra página que dice " Si estás usando OS X, entonces no deberías usar sudo ". No sé si significan solo para ese ejemplo, o en general.


  1. Docker se llama a sí mismo un tiempo de ejecución autosuficiente para contenedores Linux. En términos simples, actúa tanto como servidor como cliente.
  2. La consulta del comando $ docker version es interna para el ejecutable de Docker y no para el demonio / servicio en ejecución.
  3. $ docker images or $ docker ps or $ docker pull centos son comandos que envían consultas al dacker de servicio / dacker de Docker.
  4. Docker por defecto admite conexiones TLS a su demonio / servicio.
  5. Solo si el usuario con el que inició sesión es parte de la docker grupo de usuarios o si ha utilizado sudo antes del comando, por ejemplo, $ sudo docker images , no requiere conectividad TLS.

Visite la página de documentación de Docker Proteja el socket del demonio Docker .

Desplácese un poco hacia la parte superior y busque la warning section para mayor claridad.


Asegúrate de que haya

127.0.0.1 localhost

en tus

`/etc/hosts `

archivo.


Asegúrese de que el demonio Docker se esté ejecutando:

service docker start

¡Eso me lo arregló!


El demonio Docker se une a un socket Unix en lugar de a un puerto TCP. Por defecto, el socket Unix es propiedad del usuario root y otros usuarios solo pueden acceder a él usando sudo. El demonio Docker siempre se ejecuta como usuario root.

sudo groupadd docker sudo usermod -aG docker $USER

Cierre sesión y vuelva a iniciarla para que su membresía de grupo sea reevaluada.

docker run hello-world

Fuente: Administrar Docker como usuario no root


El problema de subrayado es simple: falta de permiso para /var/run/docker.sock socket de dominio unix.

Desde el chapter de opción de socket Daemon de la referencia de Docker Command Line para Docker 1.6.0:

De forma predeterminada, se crea un socket de dominio Unix (o socket IPC) en /var/run/docker.sock , que requiere permiso de root o pertenencia a un grupo de docker .

Los pasos necesarios para otorgar derechos a los usuarios se describen muy bien en las instrucciones de instalación de Docker para Fedora :

Conceder derechos a los usuarios para usar Docker

La herramienta de línea de comando docker contacta el proceso de dacker de docker a través de un archivo de socket /var/run/docker.sock propiedad de root:root . Aunque se recomienda usar sudo para los comandos de Docker, si los usuarios desean evitarlo, un administrador puede crear un grupo de Docker, tener su propio /var/run/docker.sock y agregar usuarios a este grupo.

$ sudo groupadd docker
$ sudo chown root:docker /var/run/docker.sock
$ sudo usermod -a -G docker $USERNAME

Cierre sesión y vuelva a iniciarla para que los cambios anteriores surtan efecto. Tenga en cuenta que los paquetes de Docker de algunas distribuciones de Linux (Ubuntu) ya colocan /var/run/docker.sock en el grupo de docker haciendo innecesarios los dos primeros pasos anteriores.

En el caso de OS X y boot2docker la situación es diferente; el demonio Docker se ejecuta dentro de una VM, por lo que la variable de entorno DOCKER_HOST debe establecerse en esta VM para que el cliente Docker pueda encontrar el demonio Docker. Esto se realiza ejecutando $(boot2docker shellinit) en el shell.


En Ubuntu después de instalar lxc-docker , debe agregar su usuario al grupo de usuarios de docker :

sudo usermod -a -G docker myusername

Esto se debe a los permisos del archivo de socket:

srw-rw---- 1 root docker 0 Mar 20 07:43 /var/run/docker.sock

NO EJECUTE usermod SIN "-a" como se sugiere en uno de los otros comentarios o borrará la configuración de sus grupos adicionales y simplemente dejará el grupo "acoplador"

Esto es lo que pasará:

➜ ~ 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)


En mi caso (Linux Mint 17) hice varias cosas, y no estoy seguro de cuáles son totalmente necesarias.

Incluí paquetes faltantes de Ubuntu:

$ sudo apt-get install apparmor lxc cgroup-lite

Se agregó un usuario a la docker grupo:

$ sudo usermod -aG docker ${USER}

Demonio iniciado (openSUSE solo necesita esto)

$ sudo docker -d

Gracias / Atribución

Gracias Usman Ismail , porque tal vez fue solo lo último ...

Pregunta estúpida, pero ¿has comenzado el demonio docker? - Usman Ismail 17 de diciembre de 14 a 15:04

Gracias también a github@MichaelJCole por la solución que funcionó para mí, porque no github@MichaelJCole el demonio cuando leí el comentario de Usman.

Comentario de 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

Gracias a la publicación de fredjean.net por notar los paquetes faltantes y olvidarse de las instrucciones predeterminadas de instalación de Ubuntu y google sobre otras formas

Resulta que los paquetes cgroup-lite y lxc no están instalados por defecto en Linux Mint. La instalación de ambos me permitió ejecutar bash en la imagen base y luego construir y ejecutar mi imagen.

Gracias al brettof86 de brettof86 sobre openSUSE


Es posible que aún no tenga el permiso para el archivo. Me sucedió después de docker grupo docker usando

sudo gpasswd -a user docker

pero aún no cerrar sesión.

Para resolver esto, puede volver a iniciar sesión o usar sg docker "docker <subcommand> ..." antes de cerrar sesión.

Si está en la docker grupo en /etc/group , debería poder ejecutarlo sin escribir la contraseña.

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/


Me enfrenté al mismo problema cuando estaba creando imágenes Docker de Jenkins. Simplemente agregue el usuario al grupo de docker y luego reinicie los servicios de Docker y en mi caso tuve que reiniciar los servicios de Jenkins.

Este fue el error que obtuve:

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]#


Necesitarás hacer:

$boot2docker init $boot2docker start

La siguiente configuración solucionó el problema:

$export DOCKER_HOST=tcp://192.168.59.103:2376 $export DOCKER_CERT_PATH=/Users/{profileName}/.boot2docker/certs/boot2docker-vm $export DOCKER_TLS_VERIFY=1


Otra posible razón es que la visualización de la CPU del BIOS no está habilitada. ¡Ve y habilítalo primero!


Para mí, ejecutar $(boot2docker shellinit 2> /dev/null) solucionó el problema.

Esto ejecuta la salida del comando boot2docker shellinit (las tres líneas set -x ... ) en su sesión de terminal actual, que le permite al comando docker saber dónde encontrar la máquina virtual boot2docker.

Agregar $(boot2docker shellinit 2> /dev/null) al final de su archivo ~/.bash_profile se asegurará de que el comando docker esté configurado, cada vez que abra su terminal.

Para las personas que usan Fish Shell: boot2docker shellinit ^ /dev/null | source boot2docker shellinit ^ /dev/null | source .

Tenga en cuenta que 2> /dev/null (y el equivalente de Fish ^ /dev/null ) son opcionales. Como sugirió @ pablo-fernandez, esto oculta las líneas Writing ..


Para mí, los siguientes pasos funcionaron:

  1. Me di cuenta de que ejecutar docker run hello-world falla con este error marcado como en la pregunta, pero ejecutar sudo docker run hello-world funcionó.
  2. Agregué mi usuario actual al grupo de docker , sudo adduser user docker . Luego debe reiniciar su máquina o usar su - user (verifique usando el comando groups si está en el grupo docker ).

Después de eso, hello-world comenzó a funcionar.

Mi respuesta se basa en ¿Cómo puedo usar docker sin sudo? que explica lo que sale mal.


Por lo que vale, probé todas las soluciones en esta pregunta y en esta pregunta relacionada y ninguna resolvió mi problema hasta que desinstalé y reinstalé VirtualBox . Este proceso actualizó el VirtualBox de la versión 4.2.16 a 4.3.22 (mi anterior había estado sin uso en el sistema durante unos meses).

Luego boot2docker y docker funcionaron sin ningún otro ajuste.


Probé las soluciones aquí, y boot2docker no funcionó.

Mi solución: desinstalar boot2docker en la Mac, instalar una máquina virtual Centos 7 en VirtualBox y trabajar con Docker dentro de esa máquina virtual.


Recibía el mismo error en MacOS con sudo y sin él.

Lo he resuelto con:

boot2docker start $(boot2docker shellinit)

PD: Gracias a Alan. Descubrí que este enfoque se recomienda en su documentación oficial .

PS2: a veces se puede requerir boot2docker init antes de ejecutar dos comandos (gracias Aaron).


Todo lo que necesita para ejecutar Docker en Linux Ubuntu / Mint:

sudo apt-get -y install lxc sudo gpasswd -a ${USER} docker newgrp docker sudo service docker restart

Opcionalmente, es posible que necesite instalar dos dependencias adicionales si lo anterior no funciona:

sudo apt-get -y install apparmor cgroup-lite sudo service docker restart


Tuve el mismo problema e intenté varias cosas para solucionarlo, modificando el archivo .bash_profile, iniciando y cerrando sesión, sin suerte. Al final, reiniciar mi máquina lo arregló.


Yo tuve el mismo problema. Un simple service docker restart resolvió el problema.


TLDR : Esto hizo que mi grupo de reunión de Python superara este problema cuando estaba ejecutando una clínica para instalar Docker y la mayoría de los usuarios estaban en OS X:

boot2docker init boot2docker up

ejecuta los comandos de export te da la salida, luego

docker info

debería decirte que funciona.

El contexto (lo que nos trajo al problema)

Dirigí una clínica para instalar Docker y la mayoría de los asistentes tenían OS X, y nos encontramos con este problema y lo superé en varias máquinas. Aquí están los pasos que seguimos:

Primero, instalamos homebrew (sí, algunos asistentes no lo tenían):

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Luego obtuvimos cask, que usamos para instalar virtualbox, y luego usamos brew para instalar docker y boot2docker (todo requerido para OS X) No use sudo para brew. :

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

La solución

Fue entonces cuando nos encontramos con el problema que el autor de la pregunta tenía aquí. Lo siguiente lo arregló. Entiendo que init fue un trato de una sola vez, pero probablemente tendrás que correr cada vez que inicies docker:

boot2docker init boot2docker up

Luego, cuando se ha ejecutado, da varios comandos de export . Copia y pega y ejecuta esos.

Finalmente, la docker info debería decirte que está correctamente instalado.

A demo

El resto de los comandos deberían demostrarlo. (en Ubuntu Linux requería sudo.)

docker run hello-world docker run -it ubuntu bash

Entonces deberías estar en un shell de raíz en el contenedor:

apt-get install nano exit

Volver a su bash de usuario nativo:

docker ps -l

Busque el identificador hexadecimal de 12 dígitos (0-9 o af) en "ID de contenedor", por ejemplo, 456789abcdef . Luego puede confirmar su cambio y asignarle un nombre descriptivo, como descriptivename :

docker commit 456789abcdef descriptivename`