Cómo crear un paquete con Docker

Cuando hablamos de paquetes, generalmente nos referimos a un elemento de software o a bibliotecas agrupadas para su reutilización a escala. De hecho, un paquete lo pueden utilizar varias aplicaciones importando o ampliando el propio paquete.

Docker es una herramienta que te facilitará la vida como desarrollador. Estamos hablando de un proyecto de código abierto que puede realizar la implementación automática de aplicaciones dentro de contenedores de software, es decir, una plataforma que te permitirá crear, probar e implementar aplicaciones a través de contenedores.


Docker Package: el concepto de «imagen»

El concepto de paquete se puede trasladar a Docker con imágenes o Docker image. Una Docker image suele contener un conjunto de instrucciones para crear contenedores. Los contenedores son instancias de software en ejecución. A partir de la misma imagen debes saber que es posible crear múltiples contenedores.

Por ejemplo, si quisieras crear varias instancias de ngnix para satisfacer diferentes solicitudes HTTP, puedes hacerlo a partir de la misma imagen nginx.

Siguiendo el mismo ejemplo, es posible que te preguntes cómo puedes, a partir de la imagen pública de ngnix, aplicar una configuración personalizada para tu servidor web.

Es muy sencillo: tienes que crear una imagen personalizada en la que, partiendo de la imagen base de nginx, se aplican pasos en los que vas a añadir la configuración personalizada de nginx.

Para ello creamos un nuevo proyecto al que llamaremos myapp. Dentro del proyecto creamos un archivo llamado Dockerfile y una carpeta de configuración con el archivo default.conf.

Docker package

Creemos nuestra configuración dentro del archivo config/default.conf. El ejemplo contiene una configuración ficticia, en la que las solicitudes se envían a un servidor PHP.

Docker package

Ahora creemos los pasos de elaboración de la nueva imagen dentro del Dockerfile.

Docker package

Como puedes ver, realizamos tres pasos, el último de los cuales es totalmente opcional y tiene como único propósito mostrar el comando RUN. Comenzando desde arriba, el comando FROM indica con qué imagen comenzar al crear la nueva imagen. COPY, en cambio, tiene dos partes: el archivo que se va a copiar y su destino final dentro de la imagen. De esta manera copiamos nuestra configuración nginx personalizada a la carpeta apropiada dentro de la imagen.
Además de copiar archivos, puedes ejecutar comandos con el comando RUN. Esto es útil para automatizar la instalación de software adicional o de otro tipo.

Hay muchos otros comandos para el archivo Docker. Puedes encontrar la referencia completa en esta dirección. Haciendo clic aquí puedes encontrar una fuente de gran interés si te interesas de verdad por Docker.


Lanza el Comando Docker Build

Una vez creados los archivos, desde la terminal basta con lanzar el comando docker build para crear la nueva imagen personalizada.

Docker package

Como puedes ver en la imagen, los tres pasos descritos en el Dockerfile se realizan en secuencia. El argumento -t del comando docker build te permite nombrar la imagen. En este punto, nuestra imagen estará disponible para su uso:

Docker package

Con esta miniguía, ahora deberías ser capaz de crear una imagen tú mismo con Docker. ¡Consulta la referencia que mencionamos en el párrafo anterior para obtener más detalles y empieza a experimentar!

Cómo llevar a cabo la implementación con Docker

Docker es una plataforma que permite, mediante un sistema de virtualización, ejecutar programas en paquetes llamados contenedores.

Los contenedores están aislados entre sí e incluyen todos los recursos de software, incluido el sistema operativo, por lo que permiten la ejecución de la aplicación.


Deploy Docker: ejecutar una aplicación con Docker usando Docker Image

Para ejecutar la implementación de una aplicación con Docker, primero se debe disponer de una imagen.

La imagen, o Docker image, es un dispositivo de sola lectura que contiene un conjunto de instrucciones para crear un contenedor que pueda ejecutarse en la plataforma Docker. La imagen ofrece un método especialmente cómodo para crear paquetes de aplicaciones y entornos de servidor preconfigurados.

La Docker image se puede crear usando un Dockerfile y con el comando docker build.

Deploy Docker

Podemos encontrar la imagen recién creada en la lista de imágenes con el comando docker image ls.

Para implementar la aplicación se necesita tener una instancia de Ubuntu Server con Docker instalado. Esta instancia puede estar en una máquina virtual local o remota o bien en una máquina física dedicada.

Hay que tener en cuenta que la máquina virtual en la que se realizará la implementación deberá tener acceso a la imagen creada. Para ello, es necesario copiar la imagen en un registro Docker accesible a través de Internet. Hay muchos servicios, como Docker Hub, Amazon ECR o Google Container Registry.

Además, necesitaremos crear una cuenta para obtener la url del registro y la habilitación para poder subir imágenes Docker. En este punto, se puede cargar la imagen con el comando docker push:

Deploy Docker

Una vez hecho esto, accediendo a la máquina con Ubuntu Docker, necesitamos tomar la imagen del registro:

Deploy Docker

Tan pronto como tengamos la imagen podemos lanzar un contenedor con el comando docker run:

Deploy Docker


Deploy Docker: ejecutar comandos dentro del contenedor

El atributo -p permite mapear el puerto 80 para que sea accesible desde el exterior. Ahora, ejecutando el comando docker ps, se debería ver el contenedor recién lanzado en la lista.

Para ejecutar comandos dentro del contenedor en ejecución se puede ejecutar el comando docker exec. Al ejecutar el comando bash o sh, se podrá usar el shell dentro del contenedor del siguiente modo:


Escalar varios contenedores de forma dinámica: herramientas de orquestación de contenedores

Esta es la forma más sencilla de ejecutar la implementación de un contenedor Docker. ¿Qué pasa si queremos ejecutar varios contenedores y hacer que interactúen entre sí? ¿Qué pasa si queremos escalar el número de contenedores de forma dinámica?

Para hacer esto, necesitamos una herramienta de orquestación de contenedores. Hay muchos, como Docker Swarm, Kubernetes o Amazon ECS, temas que abordaremos en los próximos artículos en profundidad.

Esperamos que esta miniguía te haya sido de ayuda y, sobre todo, que te haya servido para entender cómo crear una imagen e implementar un contenedor.

Docker es actualmente una herramienta esencial para cualquier persona involucrada en el desarrollo web y la programación desde el lado del servidor.

Docker nos permite distribuir el código de forma más rápida y es una herramienta que nos da una oportunidad real de hacer homogéneo el funcionamiento de las aplicaciones optimizando la transferencia de código.

Cómo instalar Docker: mini guía práctica

Instalar Docker en tu máquina para crear un entorno de desarrollo es muy sencillo. Veamos cómo instalarlo en Windows, Mac y Ubuntu.

Cómo instalar Docker: Windows, Mac y Ubuntu

En esta miniguía vemos cómo instalar Docker en Windows, Mac y Ubuntu.


Instalar Docker en Windows

Antes de comenzar la instalación, asegúrate de tener una versión de Windows entre Pro, Enterprise o Education.

Si tienes Windows Home, tendrás que instalar WSL 2, un subsistema para Windows que permite crear un entorno Linux en el que se pueda ejecutar Docker.

Guía de instalación de WSL 2: https://docs.microsoft.com/en-us/windows/wsl/install-win10

AEn este punto tendremos que descargar el instalador. El instalador de Docker para Windows se puede descargar desdeDocker Hub:
Haz doble clic en el ejecutable .exe y sigue estos pasos:

  • Cuando se te lo solicite, asegúrate de que la opción para habilitar Hyper-V esté marcada.
  • Sigue las instrucciones del instalador y dale permiso para continuar.
  • Completa el proceso y cierra el instalador.

Para lanzar Docker, busca «Docker» y elige «Docker Desktop» entre los resultados.

How to install Docker


Instalar Docker en Mac

Al igual que con Windows, para instalar Docker en Mac, debes descargar el instalador de Docker Hub.

Como requisito mínimo, tu ordenador no debe ser un modelo anterior a 2011 y debes tener una versión de macOS igual o posterior a la 10.14.

Tenga en cuenta que si tu modelo es muy reciente y tiene un procesador M1 de nueva generación, no hay ninguna versión estable de Docker disponible actualmente, en la fecha en que se escribió este artículo. Es posible descargar una versión aún en desarrollo llamada Apple M1 Tech Preview. Lee atentamente la sección «Known issues», donde se enumeran las limitaciones y los problemas conocidos.

Cuando hayas descargado el instalador con la extensión .dmg, haz doble clic. Se abrirá una ventana con el icono de Docker y la carpeta de aplicaciones. Arrastra Docker.app a la carpeta de aplicaciones.

How to install Docker

Ahora busca Docker desde el spotlight (cmd + espacio) e inicia Docker.

En la barra de estado superior derecha deberías poder ver el icono de Docker.

How to install Docker

El proceso de arranque finalizará cuando el icono permanezca fijo.


Instalar Docker en Ubuntu

Para instalar Docker en Ubuntu, debes seguir algunos pasos de línea de comandos.

  1. Instalar algunos paquetes necesarios para utilizar un repositorio sobre HTTPS:

    $ sudo apt-get update
    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

  2. Añadir la clave GPG oficial de Docker:

    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

  3. Añadir el repositorio:

    $ sudo add-apt-repository \
    “deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable”

    Ten en cuenta que puedes establecer un valor diferente para «arch» si tu procesador tiene una arquitectura diferente a x86: armhf o arm64.

  4. Instala Docker Engine:

    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io

  5. La instalación de Docker ya ha terminado.

Qué es Docker y cómo funciona esta valiosa herramienta

Docker es una plataforma que ha revolucionado la forma en que creamos, probamos e implementamos nuestras aplicaciones. ¿Por qué? Porque gracias a Docker, el software de código abierto para la contenerización en un entorno Linux, podemos implementar y recalibrar recursos para nuestras aplicaciones en cualquier entorno.

En este artículo que hemos redactado vamos a ver juntos las principales características de Docker: cuándo usarlo, cómo funciona Docker y cuál es la diferencia entre Docker y una máquina virtual.
¡Síguenos!

Veamos Docker en detalle

Su lenguaje de programación es muy sencillo e intuitivo, una característica que nos permite mantener nuestros recursos siempre bajo control.
La principal característica de Docker es que permite implementar el código más rápidamente, hacer que las aplicaciones funcionen sin problemas y optimizar la transferencia de código. Todo esto, como comprenderás, nos ahorra una gran cantidad de tiempo, energía y dinero.
Pero la cosa no acaba ahí. De hecho, gracias a Docker:

  • el software se distribuye con una frecuencia siete veces mayor que la frecuencia de quienes no lo utilizan;
  • el uso de los contenedores facilita la distribución y la identificación de los problemas y el “rollback” para la recuperación;
  • también se facilita el traslado de aplicaciones de equipos de desarrollo locales a implementaciones de producción en AWS.

¿Cómo funciona Docker?

En este apartado vemos con un poco más de detalle, pero sin perdernos demasiado en tecnicismos, cómo funciona Docker.

Como hemos visto en los párrafos anteriores, Docker es la plataforma de software de código abierto que proporciona una forma estándar de crear, ejecutar e implementar aplicaciones utilizando contenedores.
El contenedor es un entorno aislado en el que la aplicación se ejecuta en su propio sistema operativo, compartiendo recursos de hardware asignados dinámicamente (CPU y RAM) con el servidor.
Esta funcionalidad se ve favorecida y simplificada por servicios como Docker Compose o Kubernetes, que facilitan la ejecución y gestión de los contenedores.

La otra característica, que solo podemos describir como más que positiva, es que los contenedores Docker simplifican la ejecución del código del lado del servidor, mejorando los niveles de uso.

¿Cuál es la diferencia entre Docker y una máquina virtual?

Las máquinas virtuales y los contenedores difieren en varios aspectos, pero la principal diferencia es que los contenedores proporcionan una forma de virtualizar un sistema operativo para que varias cargas de trabajo puedan ejecutarse en una única instancia del sistema operativo.
Con las máquinas virtuales, el hardware se virtualiza para ejecutar varias instancias del sistema operativo. La velocidad, agilidad y portabilidad de los contenedores los convierten en una herramienta más para simplificar el desarrollo de software.