Introducción
Si has llegado hasta aquí apuesto que es porque trabajas con Windows o Mac y te ha salido un mensaje como el de esta imagen.
Donde dice que Docker Desktop ya no es gratis para empresas como la tuya en las que trabajáis más de 250 personas y/o factura más de 10 millones al año y el período de gracia del 31 de Enero de 2022 ha expirado.
Así que no te queda otra que pagar la suscripción para poder seguir usando la herramienta o seguir este tutorial para saber cómo montarte tu propio Docker Desktop.
O, si nada te ata a Windows o Mac, lo mejor que puedes hacer es pasarte a Linux y disfrutar de todos sus ventajas de forma nativa.
Vamos al lío
Creación de la máquina virtual con Ubuntu Server
Lo primero que debes saber es que Docker solo corre libre como el viento en sistemas operativos Linux, por lo que vas a necesitar una máquina virtual que corra Linux en tu Windows o Mac.
Esto es exactamente lo que hace Docker Desktop y, de ahí que en las preferencias puedas dar más o menos RAM a Docker Desktop, es decir, a la máquina virtual que te monta.
Así que, para continuar, necesitamos descargar el siguiente software:
- Virtualbox – https://www.virtualbox.org/wiki/Downloads – gestor de máquinas virtuales. Si ya tenías Docker Desktop es bastante posible que lo tengas ya instalado, aunque te aconsejo actualizar a la última versión disponible.
- ISO de Ubuntu 20.04 Server – https://ubuntu.com/download/server. La imagen del sistema operativo que vamos a instalar. Como no vamos a necesitar interfaz gráfica lo mejor es instalar la versión server.
- Lens – https://k8slens.dev/. Herramienta para gestionar de forma gráfica cualquier cluster de Kubernetes.
Una vez descargado el software, vamos a crear nuestra máquina virtual con Ubuntu donde poder instalar Docker y Kubernetes.
Para ello ejecutamos Virtualbox y pulsamos en «New».
Le damos un nombre a nuestra máquina virtual, seleccionamos que va a ser de tipo Linux Ubuntu 64 bits y pulsamos en «Continue».
Establecemos la cantidad de memoria RAM que va a quedar «secuestrada» por nuestra máquina. Aquí lo aconsejable es dar la mayor cantidad posible dentro de los límites de nuestra máquina, dado que Docker y Kubernetes necesitan mucha RAM. Pulsamos en «Continue».
En el siguiente paso seleccionamos la opción de crear un nuevo disco virtual para nuestra máquina y pulsamos en «Create».
En el tipo de disco duro dejaremos seleccionado VDI y pulsamos en «Continue».
Seleccionamos que va a tener un almacenamiento dinámico y pulsamos en «Continue».
En el siguiente paso establecemos la ruta del fichero y el tamaño que le queremos dar al disco duro de nuestra máquina virtual. En este caso se aconseja dar bastante capacidad, ya que las imágenes de Docker ocuparán bastante espacio en función del uso que se les vaya a dar. Pulsamos en «Create» para finalizar el proceso.
Establecer la interfaz de red
Para que nuestra máquina Mac o Windows se pueda comunicar sin problemas y con una IP fija con nuestra máquina virtual, es necesario crear una interfaz de red.
Desde Virtualbox pinchamos en «Tools» y seguidamente «Network».
Ahora pinchamos en «Create».
Esto hace que se añada un entrada con la nueva interfaz, en la cual vamos a habilitar el check de DHCP Server.
Configurar las preferencias de la máquina virtual
Para configurar las preferencias, pulsamos en «Settings».
Dentro de «Settings» nos vamos a «Network», el «Adapter 1» lo dejamos en NAT y habilitamos el «Adapter 2» de tipo «Host-only Adapter» con el nombre «vboxnet0», que es la interfaz de red que creamos en pasos anteriores. Hecho esto pulsamos en «OK».
Arrancamos la máquina virtual
Para arrancar la máquina virtual tenemos que pulsar dos veces sobre la máquina.
Es posible que en Mac aparezca este mensaje, indicando que hay que añadir Virtualbox dentro de «Accesibility», cosas que solo pasan en Mac. Para ello pulsamos en «Open System Preferences».
Desbloqueamos el candado de abajo con nuestra contraseña del equipo y dentro de «Accessibility» – «Privacy» marcamos «Virtualbox».
Después de hacer esto, veremos la siguiente pantalla donde poder seleccionar la ISO de Ubuntu, que ya tenemos que tener descargada. Una vez seleccionado el fichero, pulsamos en «Start» para arrancar la máquina virtual.
Configuración del sistema operativo virtual
Ahora tenemos que configurar nuestro Ubuntu Server desde cero. Lo primero que nos pregunta es por el lenguaje. A mi me parece buena idea tenerlo en Inglés, pero aquí es a elección vuestra. Una vez seleccionado pulsamos en «Enter».
La siguiente pantalla nos detecta los interfaces de red que tenemos configuradas. Aquí es muy importante quedarse con la IP de la interfaz enp0s8, en mi caso, 192.168.56.3, pero podría variar en vuestro caso.
La siguiente pantalla es importante. En caso de que estéis detrás de un proxy tendréis que poner aquí la URL adecuada.
En la siguiente pantalla, se establece el mirror por defecto para poder descargar paquetes de Ubuntu. Se puede quedar por defecto, y avanzar al siguiente paso.
En la siguiente pantalla nos permite seleccionar todo el disco virtual para ser formateado acorde a la instalación del sistema operativo.
Confirmamos la operación.
Creamos el usuario administrador de la máquina. Aquí puedes poner los datos que consideres adecuados.
Es importante indicar que queremos instalar OpenSSH para poder acceder a nuestra máquina virtual desde el terminal de Mac o Windows.
También vamos a indicar que queremos instalar microk8s (cluster de Kubernetes) y Docker.
Con esto comienza la instalación del sistema operativo en nuestra máquina virtual, la cual tardará unos minutos. Cuando finalice se mostrará la opción de «Reboot Now».
Acceso a la máquina virtual desde terminal
Abrimos un terminal y nos conectamos vía SSH con nuestro Docker Desktop con la IP que vimos que la máquina host nos había asignado.
$> ssh owndockerdesktop@192.168.56.3
Una vez dentro, podemos ejecutar cualquier comando de Docker como por ejemplo:
$> docker images
Si nos encontramos un error de este tipo:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get «http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json»: dial unix /var/run/docker.sock: connect: permission denied
Debemos ejecutar el siguiente comando para poder ejecutar los comandos de Docker sin sudo.
$> sudo chmod 666 /var/run/docker.sock
Ahora, para comprobar que efectivamente podemos trabajar con Docker, vamos a levantar un servidor de nginx con el siguiente comando:
$> docker run -d -p 8888:80 nginx
Y desde nuestro navegador navegamos a la URL: http://192.168.56.3:8888, con lo que tenemos que ver el mensaje de bienvenida de nginx, certificando que ya podemos trabajar con Docker.
Conectar con el cluster de Kubernetes
Por último, para poder conectar con nuestro cluster de Kubernetes vamos a ejecutar el siguiente comando, a fin de obtener la información de conexión.
$> microk8s config view
Copiamos el contenido que aparezca por pantalla y lo pegamos en el fichero ~/.kube/config de nuestra máquina host, en mi caso, del Mac; modificando la IP 10.15.0.2 por la IP de nuestra máquina virtual, en mi caso, 192.168.56.3.
Ahora abrimos Lens.
Pulsamos en + y por defecto ya nos tomará la información del fichero ~/.kube/config, con lo que solo tenemos que pulsar en «Add cluster».
Hecho esto veremos cómo Lens se conecta a nuestro cluster y podemos ver y trabajar con todos los elementos del cluster.
Conclusiones
Obviamente Docker Desktop ofrece una interfaz gráfica que no tenemos con esta solución, pero esta solución es suficiente para poder trabajar con Docker y Kubernetes en Mac y Windows.
Simplemente tenemos que levantar la máquina virtual cada vez que queramos levantar algún contenedor con Docker y trabajar con el cluster de Kubernetes.
Espero que te aporte valor.