{"id":90245,"date":"2022-08-12T10:11:08","date_gmt":"2022-08-12T10:11:08","guid":{"rendered":"https:\/\/magazineoffice.com\/como-solucionar-los-errores-no-se-puede-conectar-con-el-demonio-docker\/"},"modified":"2022-08-12T10:11:09","modified_gmt":"2022-08-12T10:11:09","slug":"como-solucionar-los-errores-no-se-puede-conectar-con-el-demonio-docker","status":"publish","type":"post","link":"https:\/\/magazineoffice.com\/como-solucionar-los-errores-no-se-puede-conectar-con-el-demonio-docker\/","title":{"rendered":"C\u00f3mo solucionar los errores \u00abNo se puede conectar con el demonio Docker\u00bb"},"content":{"rendered":"
\n<\/p>\n
Docker es una de las plataformas l\u00edderes para crear y ejecutar contenedores de software. Viene con todo lo que necesita para usar contenedores en un solo host o en m\u00faltiples nodos distribuidos en modo Swarm.<\/p>\n
Docker tiene una arquitectura basada en demonios. El software responsable de crear e iniciar contenedores es independiente del proceso CLI que acepta sus comandos. Esto significa que ver\u00e1 errores en la CLI si intenta ejecutar comandos sin una conexi\u00f3n de daemon activa. En este art\u00edculo, compartiremos algunos m\u00e9todos para solucionar estos mensajes frustrantes.<\/p>\n
La CLI de Docker depende de la disponibilidad de una conexi\u00f3n daemon. Interact\u00faa con el daemon mediante llamadas a la API. Cuando el demonio configurado es inaccesible, Esto revela que la CLI intent\u00f3 comunicarse con el demonio Docker usando el El demonio de Docker generalmente es administrado por un servicio systemd que inicia autom\u00e1ticamente Docker despu\u00e9s de que su host se reinicia. Puede comenzar a solucionar problemas comprobando si este servicio se est\u00e1 ejecutando:<\/p>\n El servicio debe informar Inicie Docker con el siguiente comando:<\/p>\n Ahora deber\u00edas poder ejecutar Es posible que Docker permanezca en el estado detenido despu\u00e9s de reiniciar su m\u00e1quina. Puede resolver esto habilitando el servicio, permitiendo que systemd lo inicie autom\u00e1ticamente:<\/p>\n los En ocasiones, es posible que utilice un sistema que no tenga instalado el servicio Docker. Puede iniciar manualmente el demonio de Docker utilizando el Docker permanecer\u00e1 accesible mientras se ejecute el comando. Use Ctrl+C para detener el demonio.<\/p>\n Pueden ocurrir problemas cuando la CLI intenta conectarse a una instancia remota del demonio de Docker. Esta suele ser la causa cuando el mensaje de error muestra una direcci\u00f3n TCP:<\/p>\n En este ejemplo, el Por lo general, puede resolver esto cambiando al contexto correcto de la CLI de Docker para la conexi\u00f3n de daemon que desea usar:<\/p>\n Puede enumerar todos los contextos disponibles y los puntos finales del daemon a los que se conectan con el El contexto seleccionado actualmente se resalta con un asterisco.<\/p>\n Valores inesperados en el la presencia de la Este problema se puede resolver borrando el Docker ahora usar\u00e1 el punto final configurado por su contexto activo. Este ser\u00e1 el socket Unix local predeterminado en Los permisos de usuario incorrectos en el socket de Docker son otra causa com\u00fan de problemas de conexi\u00f3n de daemon. Este tipo de problema generalmente muestra un mensaje de error ligeramente diferente:<\/p>\n Esto sucede cuando su cuenta de usuario de Unix no tiene permiso para interactuar con el socket que expone la API de Docker. Agregarte a ti mismo a la Deber\u00e1 abrir una nueva ventana de shell o cerrar la sesi\u00f3n y volver a iniciarla para que este cambio surta efecto. Ahora deber\u00eda poder ejecutar \u00abNo se puede conectar con el demonio de Docker\u00bb aparece cuando la CLI de Docker no puede comunicarse con una instancia de demonio de Docker usando su configuraci\u00f3n actual. A menudo, esto se debe a que el servicio del demonio de Docker se ha detenido o deshabilitado. Tambi\u00e9n podr\u00eda estar intentando conectarse a un host Docker remoto que se ha desconectado.<\/p>\n Ahora debe conocer las posibles causas de este problema y las formas comunes de resolverlo. Solucione el error comprobando la configuraci\u00f3n del demonio de Docker, reiniciando el servicio de Docker y asegur\u00e1ndose de que su cuenta de usuario tenga permiso para interactuar con el socket de Docker.<\/p>\n<\/div>\ndocker<\/code> comandos como
docker ps<\/code>,
docker run<\/code>y
docker build<\/code> mostrar\u00e1 un mensaje de error similar a este:<\/p>\n
$ docker run hello-world:latest
\nCannot connect to the Docker daemon at unix:\/\/\/var\/run\/docker.sock
\nIs the docker daemon running?<\/pre>\n
\/var\/run\/docker.sock<\/code> Z\u00f3calo de Unix. El enchufe no est\u00e1 abierto, por lo que la conexi\u00f3n fall\u00f3.<\/p>\n
1. Verifique que el servicio Docker Daemon se est\u00e9 ejecutando<\/h2>\n
$ sudo systemctl status docker
\ndocker.service - Docker Application Container Engine
\n Loaded: loaded (\/lib\/systemd\/system\/docker.service; enabled; vendor preset: enabled)
\n Active: inactive (dead)<\/pre>\n
Active: active (running)<\/code> si el demonio se est\u00e1 ejecutando. El ejemplo anterior muestra
inactive (dead)<\/code> lo que significa que el daemon se ha detenido.<\/p>\n
$ sudo systemctl start docker<\/pre>\n
docker<\/code> Comandos CLI con \u00e9xito.<\/p>\n
$ sudo systemctl enable docker
\n$ sudo systemctl daemon-reload<\/pre>\n
daemon-reload<\/code> El comando indica a systemd que vuelva a cargar su configuraci\u00f3n para aplicar el cambio.<\/p>\n
2. Inicie el demonio manualmente<\/h2>\n
dockerd<\/code> dominio. Por lo general, esto debe ejecutarse como
root<\/code>.<\/p>\n
$ sudo dockerd
\nINFO[2022-06-29T15:12:49.303428726+01:00] Starting up<\/pre>\n
3. Comprobaci\u00f3n de que la CLI est\u00e1 apuntando al daemon correcto<\/h2>\n
$ docker run hello-world:latest
\nCannot connect to the Docker daemon at tcp:\/\/\/0.0.0.0:2375<\/pre>\n
docker<\/code> CLI est\u00e1 intentando ponerse en contacto con el demonio de Docker en
0.0.0.0:2375<\/code> usando TCP, en lugar del socket local de Unix Docker. Esto fallar\u00e1 si la compatibilidad con TCP del demonio Docker est\u00e1 deshabilitada o si no se puede acceder al host especificado en la red.<\/p>\n
$ docker context use default<\/pre>\n
context ls<\/code> dominio:<\/p>\n
$ docker context ls
\nNAME DESCRIPTION DOCKER ENDPOINT
\ndefault * Current DOCKER_HOST based configuration unix:\/\/\/var\/run\/docker.sock<\/pre>\n
DOCKER ENDPOINT<\/code> columna generalmente son causadas por la
DOCKER_HOST<\/code> variable de entorno que se establece. Ver\u00e1 una advertencia cuando este sea el caso:<\/p>\n
$ export DOCKER_HOST=1.2.3.4
\n$ docker context ls
\nNAME DESCRIPTION DOCKER ENDPOINT
\ndefault * Current DOCKER_HOST based configuration tcp:\/\/1.2.3.4:2375
\nWarning: DOCKER_HOST environment variable overrides the active context. To use a context, either set the global --context flag, or unset DOCKER_HOST environment variable.<\/pre>\n
DOCKER_HOST<\/code> La variable de entorno en su shell anula el punto final definido por su contexto seleccionado. En este ejemplo,
docker<\/code> los comandos siempre apuntar\u00e1n a la instancia del daemon en
tcp:\/\/1.2.3.4:2375<\/code>.<\/p>\n
DOCKER_HOST<\/code> variable:<\/p>\n
$ export DOCKER_HOST=<\/pre>\n
\/var\/run\/docker.sock<\/code> a menos que haya configurado manualmente un contexto personalizado.<\/p>\n
$ docker context ls
\nNAME DESCRIPTION DOCKER ENDPOINT
\ndefault * Current DOCKER_HOST based configuration unix:\/\/\/var\/run\/docker.sock<\/pre>\n
4. Problemas de permisos<\/h2>\n
$ docker run hello-world:latest
\nGot permission denied while trying to connect to the Docker daemon socket at unix:\/\/\/var\/run\/docker.sock<\/pre>\n
docker<\/code> group es la forma de mejores pr\u00e1cticas para resolver este problema:<\/p>\n
$ sudo usermod -aG docker $USER<\/pre>\n
docker<\/code> comandos sin tener problemas de permisos.<\/p>\n
Resumen<\/h2>\n