Preámbulo
Con los recientes cambios en las licencias de Docker Desktop, muchos desarrolladores y empresas han comenzado a buscar alternativas para manejar contenedores sin incurrir en costos adicionales o restricciones de licencia. Aunque herramientas como Podman o Rancher ofrecen soluciones robustas, a menudo presentan una curva de aprendizaje más pronunciada para quienes están acostumbrados a Docker, o bien requieren de muchas configuraciones para que logren funcionar de la misma manera en la que Docker lo hace. Afortunadamente, es posible utilizar Docker sin depender de Docker Desktop. En este artículo, exploraremos cómo hacerlo de manera efectiva.
Decidí escribir este artículo tras haber pasado seis meses probando Podman y Rancher. Aunque ambas herramientas son poderosas, encontré que trabajar con Docker sin Docker Desktop ofrecía una experiencia más directa para mis necesidades. Sin embargo, me encontré con ciertas limitaciones que quiero abordar a lo largo del artículo.
Si quieres una script que haga todo automáticamente, puedes ir a mi repositorio: https://github.com/jfernandogt/install-docker-without-docker-desktop-mac/tree/main
Instalación
El único requisito previo es Homebrew, que si no lo tienes instalado, puedes encontrar instrucciones en su página aquí.
Para empezar, debemos de instalar Docker y el asistente de gestión de credenciales. Este asistente nos permitirá usar el llavero de macOS como almacén de credenciales para repositorios de contenedores remotos en lugar de Docker Desktop.
brew install docker docker-credential-helper docker-compose docker-Buildx
En algún momento nos podremos llegar a topar con este error: 'docker-credential-desktop not installed'
para esto, debemos actualizar las configuraciones de docker. Lo primero que haremos es validar que exista el directorio de .docker
y si no, crearlo con el comando siguiente:
mkdir ~/.docker
Ahora editamos el archivo con nano
nano ~/.docker/config.json
Las claves importantes que debemos actualizar son credsStore
y currentContext
{
"auths": {},
"credsStore": "osxkeychain",
"currentContext": "colima"
}
El siguiente paso es configurar docker-compose
como un complemento de Docker para poder usar docker compose como comando en lugar del script docker-compose
heredado. Primero, crearemos una carpeta en el directorio de inicio para almacenar los complementos de Docker CLI:
mkdir -p ~/.docker/cli-plugins
Luego, crearemos un enlace simbólico con el comando docker-compose en esa nueva carpeta:
ln -sfn $(brew --prefix)/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose
Ahora podemos comprobar si el comando de docker compose está funcionando:
docker compose
Debería devolvernos algo parecido a lo siguiente:
También necesitaremos Buildx para crear algunos contenedores Docker. Este se instala con Docker Engine en macOS, pero en nuestro caso lo instalamos en el paso 1 con homebrew. Lo único que debemos hacer es crear un enlace simbólico:
ln -sfn $(brew --prefix)/opt/docker-buildx/bin/docker-buildx ~/.docker/cli-plugins/docker-buildx
Ahora debemos instalar un container runtime, en mi caso opté por Colima
brew install colima
Por último para levantar o detener el servicio, bastará con ejecutar sus respectivos comandos
colima start # Para iniciar el servicio
colima stop # Para detener el servicio
Para todos aquellos que les gustan las interfaces gráficas, pueden usar la extensión de Docker para VS Code, la cual lee el currentContext
de la configuración que actualizamos y automáticamente se conecta y nos muestra la misma información que teníamos en el Docker Desktop.
Una segunda alternativa si no quisiéramos usar la extensión de VS Code y tenemos Raycast instalado, podremos usar su extensión de Docker.
Configuración del socket
Algunas aplicaciones se conectan directamente al socket de Docker, el cual usualmente se encuentra en /var/run/docker.sock
, para estas aplicaciones lo mejor es crear un enlace simbólico de colima hacia esa ruta, ejecutando este comando:
sudo ln -s /Users/TU_USUARIO/.colima/default/docker.sock /var/run/docker.sock
Conclusiones
Con estas instrucciones, puedes seguir utilizando Docker sin la necesidad de Docker Desktop, manteniendo así la flexibilidad de tus proyectos y asegurando el cumplimiento de las nuevas políticas de licencias. Al final si lo que buscamos es tener la experiencia más cercana a Docker, no hay nada más cercano a eso que usar el mismo CLI de Docker.