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 de seguir cada paso exactamente, así que me sorprende recibir este mensaje ... ¿Qué debo hacer ahora?
Acabo de notar que si no lo 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 usarla en sudo
algún momento ...
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.
boot2docker
), aunque OS X no se menciona explícitamente en la pregunta o las etiquetas. Si alguien está interesado en la respuesta genérica, vea mi respuesta.Respuestas:
Para mí, correr
$(boot2docker shellinit 2> /dev/null)
solucionó el problema.Esto ejecuta la salida del
boot2docker shellinit
comando (las tresset -x ...
líneas) en su sesión de terminal actual, lo que le permite aldocker
comando saber dónde encontrar la máquina virtual boot2docker.Agregar
$(boot2docker shellinit 2> /dev/null)
al final de su~/.bash_profile
archivo se asegurará de que eldocker
comando esté configurado, cada vez que abra su terminal.Para las personas que utilizan shell Fish:
boot2docker shellinit ^ /dev/null | source
.Tenga en cuenta que
2> /dev/null
(y el equivalente de pescado^ /dev/null
) son opcionales. Como sugirió @ pablo-fernandez, esto oculta lasWriting ..
líneas.fuente
boot2docker start
antes de ejecutar el shell init.Recibía el mismo error en MacOS con sudo y sin él.
Lo he resuelto con:
PD: Gracias a Alan. Descubrí que este enfoque se recomienda en su documentación oficial .
PS2: a veces
boot2docker init
puede ser necesario antes de ejecutar dos comandos (gracias Aaron).fuente
En mi caso (Linux Mint 17) hice varias cosas, y no estoy seguro de cuáles son totalmente necesarias.
Incluí paquetes faltantes de Ubuntu:
Se agregó un usuario al grupo
docker
:Demonio iniciado (openSUSE solo necesita esto)
Gracias \ Atribución
Gracias Usman Ismail , porque tal vez fue solo lo último ...
Gracias también a github @ MichaelJCole por la solución que funcionó para mí, porque no busqué el demonio cuando leí el comentario de Usman.
Comentario de GitHub :
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
Gracias al comentario de brettof86 sobre openSUSE
fuente
sudo adduser $USER docker
. Truco para hacer que tenga efecto en la cáscara actual fuecurgroup=$(id -gn) && newgrp docker && newgrp $curgroup
, adaptado de superuser.com/questions/272061/...El problema de subrayado es simple: falta de permiso para
/var/run/docker.sock
unixir socket de dominio.Del capítulo de opción de socket Daemon de la referencia de la línea de comandos de Docker para Docker 1.6.0:
Los pasos necesarios para otorgar derechos a los usuarios se describen muy bien en las instrucciones de instalación de Docker para Fedora :
Cierre sesión y vuelva a iniciar sesión para que los cambios anteriores surtan efecto. Tenga en cuenta que los paquetes Docker de algunas distribuciones de Linux (Ubuntu) ya se colocan
/var/run/docker.sock
en eldocker
grupo 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 laDOCKER_HOST
variable de entorno debe establecerse en esta VM para que el cliente Docker pueda encontrar el demonio Docker. Esto se realiza ejecutando$(boot2docker shellinit)
en el shell.fuente
boot2docker shellinit
y otros comandos es que este comando no realiza ningún cambio en sí mismo, sino que solo genera (imprime) comandos que debe ejecutar usted mismo. Puede ejecutarboot2docker shellinit
primero y luego copiar y ejecutar manualmente cada comando desde su salida. Es más fácil ejecutar todos los comandos ejecutandoboot2docker shellinit
en un subproceso (con$()
sintaxis) porque de esta manera cada línea de salida se ejecuta automáticamente como un comando de shell. Consulte docs.docker.com/installation/mac/#from-your-command-line donde se muestra en detalle.sudo service docker status
. En mi Ubuntu 14.04 no se estaba ejecutando después de la instalación, lo que causó el error.Asegúrese de que el demonio Docker se esté ejecutando:
¡Eso me lo arregló!
fuente
sudo service docker start
para mísystemctl enable docker.service
ysystemctl start docker.service
Para usuarios de system.d linux (Arch en mi caso)sudo service docker restart
para mí$ docker version
consulta de comando es interna para el ejecutable de Docker y no para el demonio / servicio en ejecución.$ docker images or $ docker ps or $ docker pull centos
son comandos que envían consultas al dacker de servicio / dacker en ejecución.docker
o si lo ha utilizadosudo
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
warning section
claridad.fuente
sudo usermod -a -G docker {username}
Necesitarás hacer:
La siguiente configuración solucionó el problema:
fuente
eval "$(boot2docker shellinit)"
Es posible que aún no tenga permiso para el archivo. Me sucedió después de agregarme al
docker
grupo usandopero 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 se encuentra en el grupo
docker
de/etc/group
, usted debe ser capaz de funcionar sin la contraseña de escritura.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 /
fuente
En Ubuntu después de instalar lxc-docker , debe agregar su usuario al grupo de usuarios de docker :
Esto se debe a los permisos del archivo socket:
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á:
fuente
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:
ejecuta los
export
comandos que te da la salida, luegodeberí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):
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. :
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 único, pero probablemente tendrá que correrup
cada vez que inicie Docker:Luego, cuando
up
se ha ejecutado, da variosexport
comandos. Copia y pega y ejecuta esos.Finalmente
docker info
debería decirte que está instalado correctamente.A demo
El resto de los comandos deberían demostrarlo. (En Ubuntu Linux, requería sudo).
Entonces deberías estar en un shell de raíz en el contenedor:
Volver a su bash de usuario nativo:
Busque el identificador hexadecimal de 12 dígitos (0-9 o af) en "ID de contenedor", p
456789abcdef
. Ej . Luego puede confirmar su cambio y asignarle un nombre descriptivo, comodescriptivename
:fuente
Todo lo que necesita para ejecutar Docker en Linux Ubuntu / Mint:
Opcionalmente, puede que necesite instalar dos dependencias adicionales si lo anterior no funciona:
fuente
sudo service docker start
resolví el problema en mi Ubuntu 14.04.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.
fuente
Para mí, los siguientes pasos funcionaron:
docker run hello-world
falla con este error intercalado como en la pregunta, pero la ejecuciónsudo docker run hello-world
funcionó.docker
gruposudo adduser user docker
,. Luego debe reiniciar su máquina o usarsu - user
(marque usando elgroups
comando si está en eldocker
grupo).Después de eso,
hello-world
comenzó a trabajar.Mi respuesta se basa en ¿Cómo puedo usar docker sin sudo? que explica lo que sale mal.
fuente
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 volví a instalar 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
ydocker
trabajó sin ningún otro ajuste.fuente
Yo tuve el mismo problema. Un simple
service docker restart
resuelto el problema.fuente
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.
Cierre sesión y vuelva a iniciarla para que su membresía de grupo sea reevaluada.
Fuente: Administrar Docker como usuario no root
fuente
Tuve el mismo problema e intenté varias cosas para solucionar esto, modificando el archivo .bash_profile, iniciando y cerrando sesión, sin suerte. Al final, reiniciar mi máquina lo arregló.
fuente
Asegúrate de que haya
en tus
expediente.
fuente
Me enfrenté al mismo problema cuando estaba creando imágenes Docker de Jenkins. Simplemente agregue el usuario al
docker
grupo y luego reinicie los servicios de Docker y en mi caso tuve que reiniciar los servicios de Jenkins.Este fue el error que obtuve:
fuente
Otra posible razón es que la visualización de la CPU del BIOS no está habilitada. ¡Ve y habilítalo primero!
fuente