Es una, guía hecha lo más sencillamente posible y explicada gráficamente para lograr el despliegue de un ambiente GNU Linux para su uso con Docker mediante VirtualBox, ha sido una necesidad real esto a la hora de usar un sistema como Windows para la ejecución de contenedores, personalmente me parece muy incómodo Windows para el desarrollo de aplicaciones que terminaran hospedándose en una nube GNU Linux.
Aplicando esta abstracción, podemos tener las ventajas de seguir en nuestro sistema operativo Windows, obteniendo el mejor rendimiento y compatibilidad posible con los entornos de producción en Cloud.
Requisitos
- Windows, MacOS, Unix.
- VirtualBox.
- Cliente SSH (en Windows uso la Terminal de Windows que está en la Microsoft Store).
- Visual Studio Code (Con 2 extensiones Remote SSH y VirtualBox).
Proceso de creación del ambiente
Virtualbox
How to Install VirtualBox on an Apple Silicon Mac Proceso de instalación para MacOS.
En Windows descargamos VirtualBox desde la web oficial de Oracle Downloads – Oracle VM VirtualBox.
Y descargamos e instalamos las librerias de Visual C++ Redistributable. (Solo necesario en Windows)
Una vez hemos instalado las librerías de MVC++ procedemos con la instalación de VirtualBox.
Linux
Una vez hemos finalizado la instalación de VirtualBox, descargamos la imagen Linux desde el sitio Osboxes.org – Ubuntu Server Virtual Machine
https://sourceforge.net/projects/osboxes/files/v/vb/59-U-u-svr/22.04/64bit.7z/download
He escogido Ubuntu Server 22.04 Jammy Jellyfish.
Username: osboxes
Password: osboxes.org
Open VM Tools: Not Installed
Keyboard Layout: US (Qwerty)
VMware Compatibility: Version 10+
Debemos tener en cuenta que este es el disco duro de nuestra máquina virtual, lo guardaremos en un lugar seguro donde no lo borremos por accidente.
Instalación del ambiente en la máquina virtual de Oracle.
Siga los pasos de la siguiente descripción gráfica.
Una de las ventajas de este ambiente, es que podemos asignar los recursos de manera limitada.
Configuración e inicialización del ambiente en la máquina virtual de Oracle.
Primero configuramos los puertos de la máquina virtual, para que el puerto 22, 80 y 443 de la máquina virtual sean los mismos para el host, esto lo podemos usar a conveniencia dependiendo de nuestras necesidades, en este ejemplo básico usaremos los puertos más comunes.
Conexión, gestión del ambiente GNU Linux
Para conectarnos necesitaremos un cliente ssh (en mi caso la terminal de Windows) .
con el siguiente comando:
$ ssh osboxes@localhost
Recomiendo cambiar nuestra contraseña con el comando passwd
.
Instalación de Docker y Docker Compose
Actualizamos el índice de paquetes e instalamos los paquetes para permitir el uso de un repositorio a través de HTTPS:
sudo apt update sudo apt install -y ca-certificates curl gnupg
Agregamos la llave GPG oficial de Docker:
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
Utilice el siguiente comando para configurar el repositorio:
echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Actualizamos el índice del repositorio nuevamente:
apt update
Instalamos Docker Engine, containerd y Docker Compose:
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Agregamos nuestro usuario al grupo Docker:
sudo usermod -aG docker $USER newgrp docker
Configuramos Docker para que arranque en el inicio del sistema:
sudo systemctl enable docker.service sudo systemctl enable containerd.service
A esta altura ya podemos utilizar Docker desde nuestra terminal conectada por ssh a la máquina virtual, a continuación veremos como conectarnos con Visual Studio Code y desarrollar o ejecutar nuestra primera aplicación en un ambiente Linux puro de 64 bits, emulando las condiciones generales de la nube.
Visual Studio Code y nuestro primer contenedor.
Una vez tenemos instalado Visual Studio Code (lo pueden bajar de aca ) lo ejecutamos e instalamos las siguientes extensiones.
- VirtualBox (Encender y apagar la VM)
- Remote – SSH (Conexión hacia la maquia Virtual)
Conexión y creación de un proyecto.
Nos conectamos por ssh a la máquina virtual, siga los pasos de la descripción gráfica.
Agregamos el siguiente contenido al archivo docker-compose.yml
:
version: "3" services: client: image: nginx ports: - 80:80
Y ejecutamos en nuestra terminal, desde el directorio del proyecto donde yace el archivo docker-compose.yml
:
docker compose up -d
Visitamos la dirección http://localhost desde nuestro browser y podremos observar que nuestro contenedor marcha a la perfección.
Conclusión
Este ambiente clásico, virtualizado desde VirtualBox me ha parecido una de las mejores alternativas para usar Docker en otro sistema operativo no Linux, una de las razones principales es que Docker Desktop consume muchos recursos, cuando hacemos la abstracción desde VirtualBox o VMware, asignamos una cantidad de recursos limitada, en mi caso he asignado 1 GB y puedo cambiar ese límite en el futuro si es necesario.
Windows y MacOS hacen caso omiso, no tienen una limitación de recursos estándar, deben usar un hipervisor para crear una abstracción del kernel Linux mediante WSL2, pero está limitada a las configuraciones de sus desarrolladores, pudiendo consumir más de 4 GB de ram sin estar ejecutando algún contenedor, en los nuevos modelos ARM de MacOS he tenido dificultades con ciertas imágenes que no tienen dependencias fabricadas para ARM, pero sí están en X64.
Tengo otro artículo comentando las desventajas más grandes de usar Docker fuera de su sistema operativo nativo, puedes verlo en el siguiente enlace.
https://blog.saiyans.com.ve/2023/07/14/docker-y-sus-desventajas-fuera-de-linux/
Administrador de sistemas, un curioso amante de las tecnologías.