No se puede conectar al demonio Docker en macOS
Normalmente prefiero administrar mis aplicaciones en mi OSX con cerveza
Puedo instalar Docker, Docker-compose y Docker-machine.
docker --version
Docker version 17.05.0-ce, build 89658be
docker-compose --version
docker-compose version 1.13.0, build unknown
docker-machine --version
docker-machine version 0.11.0, build 5b27455
No descargué ni ejecuté la aplicación 'Docker para Mac'.
Sin embargo, cuando intento ejecutar
> docker run -d -p 80:80 --name webserver nginx
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
Ya revisé el archivo del calcetín.
ls -lah /var/run/docker.sock /var/tmp/docker.sock
ls: /var/run/docker.sock: No such file or directory
ls: /var/tmp/docker.sock: No such file or directory
También probé esta solución propuesta: Mac OS X sudo docker No se puede conectar al demonio Docker. ¿Se está ejecutando el demonio acoplable en este host?
Pero recibí este mensaje de error:
$ eval $(docker-machine env default)
Host does not exist: "default"
¿Es posible ejecutar un servicio Docker mediante herramientas de línea de comandos?
En una Mac compatible, ejecute:
brew install --cask docker
Luego inicie la aplicación Docker . Haga clic en Siguiente. Le pedirá acceso privilegiado. Confirmar. Debería aparecer un icono de ballena en la barra superior. Haga clic en él y espere a que aparezca "Docker se está ejecutando".
Debería poder ejecutar docker
comandos ahora:
docker ps
Debido a que Docker es un paquete a nivel de sistema, no puede instalarlo usando brew install
y debe usarlo --cask
en su lugar.
Nota: Esta solución solo funciona para Mac cuyas CPU admitan virtualización, que pueden no incluir Mac antiguas.
Edición 2022: en la sección de comentarios se mencionó que ha habido un cambio de licencia para Docker Desktop. Considere las alternativas a continuación y consulte los comentarios para obtener más detalles.
En macOS, el docker
binario es solo un cliente y no puede usarlo para ejecutar el demonio Docker, porque el demonio Docker usa funciones del kernel específicas de Linux, por lo tanto, no puede ejecutar Docker de forma nativa en OS X. Por lo tanto, debe instalarlo docker-machine
para crear. VM y adjuntarlo.
Instalar docker-machine
en MacOS
Si aún no tiene docker-machine
el comando, instálelo utilizando uno de los siguientes métodos:
Usando el comando Brew :
brew install docker-machine docker
.Manualmente desde la página de lanzamientos :
$ curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine $ chmod +x /usr/local/bin/docker-machine
Consulte: Introducción a Docker para Mac .
Instalar Virtualbox
docker-machine
depende de la instalación de VirtualBox y fallará si este no es el caso. Si ya tienes VirtualBox, puedes omitir este paso.
- Usando cerveza casera:
brew install --cask virtualbox
- Usando manualmente los lanzamientos en Virtualbox.org
Deberá aceptar activamente cargar la extensión del kernel de Virtualbox en el panel de seguridad de OS X y luego proceder a reiniciar la máquina para que los siguientes comandos no fallen.Error: VBoxNetAdpCtl: Error while adding new interface
Configurar docker-machine
en macOS
Cree una default
máquina (si no tiene una, consulte:) docker-machine ls
:
docker-machine create --driver virtualbox default
Luego configure el entorno para el cliente Docker:
eval "$(docker-machine env default)"
Luego verifique nuevamente enumerando los contenedores:
docker ps
Consulte: Introducción a Docker Machine y una máquina virtual local .
Relacionado:
- ¿La ventana acoplable Brew Install no incluye el motor Docker?
- Para Linux, consulte: Docker no se puede conectar al demonio de Docker
- Para Windows, consulte: Advertencia de Docker: no se pudo obtener el punto final de registro predeterminado del demonio
Si terminaste aquí después de Docker Desktop 4.13.0 como yo, ¡es porque Docker eliminó el /var/run/docker.sock
enlace simbólico en el comportamiento predeterminado! Consulte las notas de la versión aquí .
Solución rápida: copie el comando en "Solución permanente" a continuación
El problema
Estaba experimentando que docker ps
(y otros comandos del cliente de Docker) funcionaban, pero otras bibliotecas que interactúan con Docker (como la CLI de supabase) dieron como resultado:
$ supabase start
Error: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Solución
Ahora, debe hacer algo manual para que sus herramientas encuentren el archivo Docker Socket real , que de forma predeterminada está en ~/Library/Containers/com.docker.docker/Data/docker.raw.sock
.
Solución permanente: enlace simbólico manual
Esta es una solución permanente que "deshace" esta solución temporal.
sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.raw.sock /var/run/docker.sock
DOCKER_HOST=unix:///var/run/docker.sock docker ps # test that it works using linked socket file
Solución temporal: utilice DOCKER_HOST
Esto obtendrá temporalmente su comando para usar el nuevo archivo de socket
DOCKER_HOST=unix:///Users/$USER/Library/Containers/com.docker.docker/Data/docker.raw.sock docker ps
(reemplazando docker ps
con cualquier comando que desee, como supabase start
)
También puedes hacer que funcione en tu sesión actual de terminal, o pegarlo en tu sesión .zshrc
para siempre, con:
export DOCKER_HOST=unix:///Users/$USER/Library/Containers/com.docker.docker/Data/docker.raw.sock
ATENCIÓN: Docker-machine está en desuso ( ver aquí )
El proyecto de la máquina acoplable ahora ha sido oficialmente abandonado.
Descubrí que Colima es un excelente reemplazo y puedes conectar fácilmente el demonio acoplable con unos simples pasos:
brew install docker docker-compose colima
# make coffee
colima start
Listo para acoplar:
docker run hello-world