Cómo crear un contenedor Docker en 2024

Si estás trabajando en una aplicación o un servicio que se ejecuta en varios sistemas operativos, Docker puede simplificar su proceso de despliegue.

Con la creación de contenedores Docker, puedes lanzar sin esfuerzo múltiples aplicaciones o servicios en sistemas como el hosting VPS o máquinas dedicadas. Además, Docker es ligero, más fácil de desplegar y ofrece mejor rendimiento que las máquinas virtuales.

Los contenedores Docker tienen todas las dependencias necesarias para ejecutar aplicaciones, eliminando los problemas de compatibilidad. Crear contenedores Docker desde cero es vital para cualquier proyecto de desarrollo que se despliegue utilizando este software de código abierto.

Este tutorial te enseñará cómo crear un contenedor Docker, detallando sus ventajas en el desarrollo de software y las mejores prácticas de uso. 

Un contenedor Docker es un paquete de software autocontenido con todas las dependencias necesarias para ejecutar una aplicación específica en distintos sistemas operativos. La imagen Docker dicta todas las instrucciones de configuración para iniciar o detener los contenedores. Cada vez que un usuario ejecuta una imagen, se crea un nuevo contenedor.

¿Por qué utilizar contenedores Docker?

Los contenedores Docker cambian las reglas del juego para los desarrolladores de la actualidad.

Con el aislamiento de contenedores, tus aplicaciones pueden ejecutarse en el mismo sistema operativo mientras permanecen separadas de otros sistemas operativos y contenedores. Esta característica garantiza un rendimiento constante en los entornos de desarrollo y ensayo.

Para las empresas, los contenedores Docker mejoran la velocidad de despliegue y maximizan la utilización de los recursos del sistema. 

Desde el punto de vista de los recursos, el despliegue de contenedores Docker requiere mucha menos memoria que una máquina virtual. Además, su naturaleza portátil hace posible la migración y escalado de aplicaciones heredadas.

En resumen, los contenedores Docker optimizan el proceso de desarrollo, ahorrando un tiempo valioso y contribuyendo al éxito, y a la rentabilidad de tus proyectos de desarrollo de aplicaciones.

Cómo crear un contenedor Docker

En este tutorial, utilizaremos un servidor privado virtual (VPS) con un sistema operativo Ubuntu 22.04. En primer lugar, asegúrate de que Docker está instalado en tu servidor. Si no lo está, sigue nuestra guía para instalar Docker en Ubuntu..

Si eres cliente VPS de Hostinger, puedes aprovechar nuestra plantilla Ubuntu 22.04 de 64 bits con Docker para la instalación automática de Docker. Para utilizar esta plantilla, inicia sesión en el panel de control de tu VPS y, a continuación, ve a OS y Panel → Sistema operativo.

En el menú desplegable Aplicaciones, elige Ubuntu 22.04 64bit con Docker y haz clic en Cambiar OS. Espera a que finalice el proceso de instalación.

Interfaz de hPanel con Ubuntu

Para saber más sobre esta plantilla y cómo destaca entre las demás, visita nuestra página dedicada al alojamiento VPS Docker.

Lectura recomendada

Si prefieres utilizar la distribución CentOS, lee nuestra guía de instalación de Docker CentOS 7. Sin embargo, los comandos para crear un contenedor Docker pueden ser diferentes.

Una vez realizada la instalación, sigue estos pasos de creación de contenedores Docker para ejecutar tu aplicación en un entorno aislado.

1. Construye una imagen Docker

Una imagen Docker es el plano de tu contenedor. Contiene todo el código, las bibliotecas y las dependencias que tu aplicación necesita para ejecutarse.

Al ejecutar una imagen Docker, que puede ser de propiedad privada o compartida públicamente en plataformas como Docker Hub, se transforma en un contenedor Docker.

Aunque es posible crear una nueva imagen Docker, es más práctico utilizar una imagen base y construir a partir de ella, ya que Docker Hub proporciona numerosas imágenes base que están fácilmente disponibles.

En primer lugar, inicia sesión en tu VPS utilizando un cliente SSH como PuTTY. A continuación, utiliza este comando de Linux para listar todas las imágenes Docker de tu sistema:

sudo docker images

Para obtener más información sobre las imágenes Docker existentes, utiliza el siguiente comando:

sudo docker images --help

Utiliza la opción -q a través del símbolo del sistema para listar los ID numéricos de las imágenes disponibles en tu sistema:

sudo docker images -q

Para listar todas las imágenes que no están etiquetadas ni referenciadas por un nuevo contenedor, utiliza este comando:

sudo docker images -f dangling=false

En este tutorial, sacaremos una imagen basada en MySQL. Ten en cuenta que puedes visitar la página de cada imagen para obtener información adicional.

Imagen oficial Docker basada en MySQL

Importa la nueva imagen al directorio actual ejecutando el siguiente comando. Recuerda sustituir <nombre de la imagen o id de la imagen> por el nombre o ID de la imagen elegida:

docker pull <nombre de imagen o id de imagen>
Instalar Docker mediante cliente SSH.

Otra alternativa para crear una imagen Docker es utilizar Easypanel. Esta herramienta proporciona una interfaz gráfica de usuario para simplificar la gestión de imágenes Docker, especialmente para quienes no están familiarizados con las operaciones de línea de comandos.

EasyPanel facilita la creación de imágenes Docker para aplicaciones escritas en varios lenguajes de programación como Node.js, Ruby, Python, PHP, Go y Java. Automatiza muchos de los procesos implicados en la configuración de entornos y dependencias.

Los planes de hosting VPS de Hostinger ofrecen una plantilla Ubuntu 22.04 64bit con EasyPanel, que se puede instalar a través del mismo menú Sistema operativo en el panel de control de tu VPS.

Puedes elegir entre utilizar una plantilla basada en Docker o una instalada en EasyPanel. Selecciona la que se adapte a tu experiencia y a los requisitos de tu proyecto, ya sea Docker para un mayor control o EasyPanel para una mayor facilidad de uso.

2. Escribe un Dockerfile

Un Dockerfile es un archivo de texto que indica a Docker cómo construir tu imagen. Enumera todos los comandos Docker necesarios para ensamblar una imagen de contenedor. 

Utilizar un Dockerfile garantiza que tus imágenes se construyan siempre de la misma manera, haciendo que tu trabajo sea más coherente y fácil de gestionar.

Aquí tienes un ejemplo de plantilla Dockerfile sencilla:

FROM ubuntu:latest
WORKDIR /app
COPY . .
RUN apt-get update && apt-get install -y curl
CMD ["curl", "https://www.ejemplo.com"]

En un Dockerfile, cada comando crea una nueva capa en la imagen Docker. Así es como funciona, como se muestra en nuestro ejemplo:

  • FROM ubuntu:latest: este comando extrae la última imagen padre de Ubuntu y la establece como capa base. Las siguientes capas se construirán sobre ella.
  • WORKDIR /app: establece el directorio de trabajo del contenedor, creando una nueva capa que sirve de contexto para los comandos posteriores.
  • COPY . .: copia los archivos locales en la misma carpeta que el contenedor, creando una capa adicional que contiene los archivos de tu proyecto.
  • RUN apt-get update && apt-get install -y curl: el comando de ejecución de Docker instala cURL en el contenedor, añadiendo una nueva capa para la lista de paquetes actualizada y el paquete cURL instalado.
  • CMD [«curl», «https://www.dominio.com»]: establece el comando predeterminado para ejecutar la aplicación cuando se inicia el contenedor.

Cualquier cambio que realices mientras el contenedor está en funcionamiento, como añadir o modificar archivos, se escribe en las respectivas capas grabables. De esta forma, puedes hacer ajustes temporales sin afectar a la imagen base.

Consejo profesional

Un Dockerfile es opcional cuando se utilizan imágenes preconstruidas de Docker Hub. Sin embargo, es necesario para personalizarlas o ampliarlas.

3. Construye el contenedor Docker

Si preparas un nuevo archivo Dockerfile, navega hasta el mismo directorio que dicho archivo y ejecuta el comando Docker build para iniciar un nuevo proceso de construcción de la imagen. Recuerda sustituir la opción <nombre de imagen o id de imagen> por el nombre de tu etiqueta.

docker build -t <nombre de imagen o id de imagen>

Inicia un nuevo contenedor a partir de la imagen que acabas de construir utilizando el comando de ejecución de Docker:

docker run <nombre de imagen o id de imagen>

Si no, ejecuta una imagen preconstruida importada de Docker Hub. Vamos a utilizar la imagen MySQL que sacamos anteriormente:

docker run mysql
Construir un contenedor a partir de una imagen existente.

La superposición eficiente de las imágenes es crucial para optimizar el tiempo de compilación y el uso de recursos. Cada comando de un archivo Docker crea una nueva capa, que Docker almacena en caché. 

Cuando reconstruyes una imagen, Docker reutiliza las capas no modificadas, acelerando el proceso de construcción.

Además, una superposición eficaz puede reducir el tamaño de la imagen, haciendo que sea más rápida de extraer, empujar o desplegar. Esta práctica es especialmente vital para las empresas que necesitan despliegues rápidos para seguir siendo competitivas.

4. Ejecuta y gestiona contenedores

Una vez creada la imagen del contenedor, inicia uno utilizando el comando Docker run. Sustituye <nombre del contenedor> por el nombre que elijas. Aquí, mysql bash representa el contenedor que vamos a ejecutar.

docker run --name <nombre del contenedor> -it mysql bash

Utiliza el comando Docker ps con la opción -a para listar los contenedores en ejecución de tu sistema. Añade sudo al principio del comando para ejecutarlo con permisos de root.

docker ps -a

Utiliza el siguiente comando Docker para ver el proceso superior de un contenedor:

docker top MyContainer
El comando Docker top muestra el proceso superior de un contenedor en ejecución.

Para asignar puertos entre el host y el contenedor, utiliza la opción -p junto al comando docker run:

docker run -p host_port:container_port <nombre_imagen>

El mapeo de puertos expone la aplicación de tu contenedor al exterior, permitiendo el acceso desde tu máquina anfitriona. Este proceso es vital para servidores web, bases de datos o cualquier aplicación que conecte con sistemas externos.

Para adjuntar un volumen para almacenamiento persistente, utiliza la opción -v:

docker run -v host_directory:container_directory <nombre_de_imagen>

Adjuntar volúmenes hace que tu configuración de contenedores sea más robusta, más fácil de gestionar y tenga un mejor rendimiento. Tus datos permanecen intactos aunque se detenga, elimine o actualice la configuración del contenedor Docker. 

Además, los volúmenes pueden compartirse entre varios contenedores, lo que simplifica la gestión de datos en configuraciones multicontenedor.

Consejo profesional

Utiliza los comandos de la CLI de Docker o la API de Docker para gestionar los volúmenes.

Puedes limitar recursos como la CPU y la memoria utilizando las opciones -cpus y -memory. El siguiente ejemplo limita el contenedor a un máximo de 0,5 CPUs y 500 MB de RAM.

docker run --cpus=0.5 --memory=500m <nombre de la imagen>

Ejecuta el siguiente comando para detener el contenedor en ejecución:

docker stop MyContainer

El siguiente comando muestra la información adicional del contenedor, incluyendo el ID del contenedor, la utilización de la CPU y el uso de la memoria:

docker stats
Información del contenedor mostrada mediante el comando docker stats.

Para terminar el contenedor Docker, introduce el siguiente comando en la línea de comandos:

docker kill MyContainer

Buenas prácticas para contenedores Docker

Aquí algunas buenas prácticas para garantizar un proceso eficiente de contenerización Docker.

Emplea el Asistente con IA de Hostinger

La eficiencia es vital a la hora de crear contenedores Docker. Afortunadamente, los clientes de Hostinger pueden utilizar el Asistente con IA de VPS interno para agilizar el proceso. 

Desde proporcionar guías de instalación hasta recomendar los comandos adecuados, nuestro Asistente con IA simplifica tus tareas de gestión de VPS.

Puedes acceder a esta función desde el panel izquierdo del panel de control de tu VPS. Puedes introducir consultas sobre el proceso de contenerización de Docker, como «cómo actualizar dinámicamente el contenedor cuando cambia la imagen base».

El Asistente con IA responderá con una respuesta exhaustiva, que incluirá los comandos o guiones pertinentes.

Mantén los contenedores ligeros

Los contenedores más pequeños son más rápidos, más eficientes y más seguros. Se despliegan rápidamente, utilizan menos recursos y maximizan la utilización del hardware. Con menos componentes, reducen la superficie de ataque, mejorando la seguridad general.

Sigue estos consejos para crear contenedores ligeros:

  • Opta por imágenes base ligeras: si tienes varias imágenes similares, construye una imagen base con componentes compartidos y crea imágenes Docker personalizadas a partir de ella.
  • Utiliza compilaciones en varias fases: incluye en la imagen final sólo los componentes esenciales, como los artefactos y el entorno.
  • Elimina los archivos innecesarios: después de instalar los paquetes, optimiza el rendimiento de tu aplicación Docker eliminando las imágenes Docker, la caché y los archivos temporales que no utilices.
  • Sé específico en los comandos: consolida los comandos en una sola línea de ejecución para reducir las capas de la imagen. Además, evita instalar paquetes recomendados o sugeridos que no sean esenciales.

Utiliza imágenes oficiales

Utilizar imágenes oficiales de Docker Hub para la creación de imágenes Docker garantiza una base segura, optimizada y fiable para tus contenedores. A menudo se adaptan a casos de uso específicos, proporcionando un punto de partida eficaz para desarrollar aplicaciones robustas y eficientes.

En cuanto a la seguridad, las imágenes oficiales se someten a exhaustivas comprobaciones de seguridad y se parchean rápidamente para detectar vulnerabilidades. 

Dado que se utilizan ampliamente, las imágenes oficiales están bien probadas y son compatibles con diversas configuraciones y plataformas.

Limita los permisos de los contenedores

Ejecutar contenedores con privilegios adicionales supone un riesgo para la seguridad. Un pirata informático puede hacerse con el control total de tu sistema si un contenedor se vulnera mientras se ejecuta como root.

Para mantener la seguridad del sistema, sólo concede los permisos necesarios a tu contenedor. Crea y utiliza un usuario no root para ejecutar tu aplicación dentro del contenedor. También puedes poner tu contenedor en modo sólo lectura para evitar cambios no deseados.

Protege la información sensible

Cuando se inicia el contenedor Docker, puedes configurar variables de entorno en función de la aplicación o servicio que se ejecute en su interior.

Algunas de las variables más comunes son las credenciales de la base de datos, la configuración de la aplicación y los valores secretos para la autenticación.

Las variables de entorno mantienen los datos sensibles separados de tu código e imagen, ocultándolos de quienes tienen acceso a ambos.

Utilizar variables de entorno también hace que tu configuración sea más flexible, ya que puedes cambiar fácilmente los datos sin alterar el archivo Dockerfile ni reconstruir la imagen.

Aprovecha la orquestación de contenedores

Las herramientas de orquestación de contenedores como Docker Compose y Kubernetes simplifican la gestión de aplicaciones multicontenedor. Estas agilizan el despliegue permitiéndote lanzar varios contenedores con un solo comando.

Por ejemplo, puedes utilizar Docker Compose para instalar WordPress con todos los componentes necesarios, como un servidor web y una base de datos.

Las herramientas de orquestación también se ocupan del escalado, ajustando automáticamente los servicios a medida que crece el tráfico. Distribuyen el tráfico de red entrante entre varios contenedores, mejorando el rendimiento y la fiabilidad.

Conclusión

Docker es una herramienta vital para los desarrolladores y las empresas de hoy en día, ya que ofrece un entorno consistente, despliegues racionalizados y una utilización optimizada de los recursos. Saber cómo construir uno ayuda a que tu ciclo de desarrollo sea más eficiente y seguro.

Hemos cubierto los pasos para crear un contenedor Docker a partir de una imagen y los comandos Docker habituales para completar el proceso. También has aprendido las mejores prácticas para una gestión eficiente de contenedores Docker en el servidor privado virtual Ubuntu 22.04.

Si tienes alguna pregunta sobre la creación de contenedores Docker, deja un comentario a continuación.

Cómo crear un contenedor Docker – Preguntas frecuentes

Esta sección cubre las preguntas más frecuentes sobre cómo crear un contenedor en Docker.

¿Qué es una imagen Docker vs un contenedor?

Una imagen Docker es un plano para crear un contenedor, que contiene el código, las bibliotecas y las dependencias de la aplicación. 

Por otro lado, un contenedor en Docker es una versión en ejecución de una imagen. Cuando inicias un contenedor desde una imagen, el sistema crea un entorno vivo donde la aplicación puede ejecutarse e interactuar.

¿Puede una imagen Docker tener varios contenedores?

Sí, puedes utilizar una sola imagen Docker para crear varios contenedores. Cada contenedor se ejecuta de forma independiente y tiene su propio conjunto de recursos y configuraciones. 

Esta práctica te permite escalar o ejecutar aplicaciones en varios entornos sin crear una imagen Docker cada vez, ahorrando tiempo y recursos.

¿Se pueden editar las imágenes Docker?

Las imágenes Docker están formadas por capas de sólo lectura, por lo que no puedes editarlas directamente. 

Para hacer cambios, actualiza el Dockerfile o los archivos fuente y crea una nueva imagen con el comando Docker build. 

Como los contenedores existentes no se actualizarán automáticamente, deberás detenerlos y crear otros nuevos a partir de la imagen creada.

Author
El autor

Deyimar A.

Deyi es una entusiasta del marketing digital, con experiencia en diseño de páginas web, creación de contenido, copywrite y SEO. Forma parte del equipo de SEO & Localization de Hostinger. En su tiempo libre, le gusta desarrollar proyectos, leer un libro o ver una buena película.