El servicio Docker se ejecuta claramente:
$ systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2015-12-28 19:20:50 GMT; 3 days ago
Docs: https://docs.docker.com
Main PID: 1015 (docker)
CGroup: /system.slice/docker.service
└─1015 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
$ ps wuf -u root | grep $(which docker)
root 1015 0.0 0.3 477048 12432 ? Ssl 2015 2:26 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
Sin embargo, Docker se niega a hablar con él:
$ docker info
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Estoy ejecutando la configuración predeterminada de Docker , es decir, no he cambiado ningún /etcarchivo relacionado con este servicio.
Cual podría ser el problema aquí?
arch-linux
docker
l0b0
fuente
fuente

sudo systemctl start dockerarregló, el demonio realmente no estaba corriendo ...Esta pregunta ya ha sido respondida, pero aquí hay una información adicional.
No importa si está en Arch u otra distribución como Fedora o Ubuntu, Docker usa un archivo socket para comunicarse. Cuando ejecuta
dockercomandos, utiliza este socket para hablar con el demonio Docker. Por supuesto, el demonio debe estar ejecutándose (y a menudo está deshabilitado de manera predeterminada), pero si su usuario no puede acceder al socket, tampoco podrá comunicarse con el demonio.Primero debe instalar Docker desde el repositorio de la distribución. Algunas personas descargan un script de instalación y lo canalizan a un shell (
curl ... | sh), pero se recomienda instalarlo desde el repositorio para que pueda actualizarse fácilmente.Arco:
Fedora
Como se mencionó anteriormente, el demonio puede estar deshabilitado por defecto. Si quieres usar Docker, el demonio debe estar ejecutándose.
Habilítelo (para que se inicie en el arranque):
Comience ahora (o reinicie):
Ahora, por defecto (si falta el grupo Docker), el socket Docker es propiedad de root:
Esta es la razón por la cual un usuario normal no puede hablar con el demonio docker. Un usuario normal no tiene permisos suficientes para acceder al socket. No puede alcanzar el demonio, por lo que supone que no se está ejecutando y muestra este error:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?Es por eso que muchas personas simplemente inician todos los comandos de Docker como root, usando
sudo. Pero como se describe en la otra respuesta, Docker tiene su propio mecanismo para eso, por lo que no es necesario usar sudo.Idealmente,
dockerse crea un grupo llamado al instalar Docker. Sin embargo, si ese grupo no existe cuando se inicia el demonio, el archivo de socket es propiedad de root.En algunos casos, ese grupo solía tener un nombre diferente, como
dockerrooten Fedora . Verifiquegrep docker /etc/groupsi hay tal grupo en su sistema. Si ya está usando ese grupo (su usuario está en él), necesitará configurar Docker para usarlo:En
/etc/sysconfig/docker, agregue-G dockerroot(nota: es una solución alternativa, no la mejor solución):Después de reiniciar el demonio, su usuario podrá acceder al socket:
De lo contrario, la forma oficial sería utilizar el grupo llamado
docker. Si existe, Docker lo usará automáticamente, es decir, establecerá el grupo del socket en ese grupo. Si no existe, todo lo que necesita hacer es crearlo y reiniciar el demonio:El archivo de socket será propiedad de ese grupo:
Su usuario debe estar en el
dockergrupo para poder acceder al socket:Es posible que deba cerrar sesión y volver a iniciarla (o
su - (user)), ejecutaridpara ver si está en el grupo.Luego puede usar Docker sin sudo / root:
Finalmente, una palabra de advertencia. Solo los usuarios de confianza deberían poder controlar tu demonio Docker . Ver https://docs.docker.com/engine/security/security/ .
(Pero, por supuesto, lo mismo es cierto para sudo: solo los usuarios de confianza deben estar en el
wheelgrupo).fuente
luego cierre sesión y vuelva a iniciar sesión
fuente
Después de investigar un poco para resolver este problema en mi sistema Linux, pensé en escribir esta respuesta. Esto es lo que hice para solucionar el problema.
En Fedora 22
Instalación de Docker:
Después de instalar Docker:
Se debe agregar un usuario al grupo acoplable.
El Docker Daemon necesita ser iniciado
Puedes configurar el demonio para que comience en el arranque
Puede verificar que el servicio Docker se esté ejecutando
Y un último cheque final
fuente
pacman, usando ensystemctllugar deservice+chkconfig).Si está utilizando la variante Fedora 23 o Redhat, edite
/etc/sysconfig/dockery modifique lo siguienteReinicia la ventana acoplable.
Asegúrese de agregar este grupo al sistema y agregarse al grupo.
fuente
Este comando me funciona
Encontré la solución en esta página si necesita más documentación. ¿Por qué no permitimos que usuarios no root ejecuten Docker en CentOS, Fedora o RHEL?
fuente
Si inició su motor de docker con: sudo service docker start
no puede conectarse con un usuario normal, incluso si se ha agregado al grupo 'docker'.
Simplemente puede detenerlo con: sudo service docker stop
e iniciarlo como un usuario normal: inicio del acoplador de servicio
fuente
docker grouphasta ahora.sudo service starttrabajó para mi. HOwever, observará si hay algo nuevo.También tuve el mismo problema. El problema estaba en los sockets asignados a docker-daemon y docker-client.
Primero, no se configuró el permiso para el docker-client en docker.sock.
sudo usermod -aG docker $USERLuego verifique su archivo bash donde se ejecuta el docker-client. Para mí, se configuró en 0.0.0.0:2375, mientras que docker-daemon se estaba ejecutando en un socket de Unix. (Se estableció en el archivo de configuración de dockerd).
Solo comente la línea ofensiva y funcionará bien.
Pero si desea que funcione en el puerto TCP en lugar del socket Unix, cambie el archivo de configuración de dockerd, configúrelo en 0.0.0.0.2375 y mantenga la línea en bash como está si está presente o configúrelo en 0.0. 0.0: 2375.
fuente
Estos son los pasos que seguí para arreglar lo siguiente
Agréguese al grupo acoplable
usermod -aG docker $USERSe corrigieron los permisos en docker socker y comando.
sudo chgrp docker /usr/bin/dockersudo chgrp docker /var/run/docker.sock$ ll $(which docker) -rwxr-xr-x 1 root docker 18991768 08.07.2017 22:57 /usr/bin/docker*$ ll /var/run/docker.sock srw-rw---- 1 root docker 0 23.07.2017 10:21 /var/run/docker.sockAgregue variables al entorno de configuración para el comando docker
export DOCKER_HOST=unix:///var/run/docker.sockDocker de descanso
sudo systemctl restart dockerfuente