Obtenga una idea del contenedor Docker.
En el espacio tecnológico actual, "Funciona en mi sistema" es una frase muy común utilizada por los desarrolladores. Pero hay muchos casos en los que la aplicación que se ejecuta en un sistema de desarrollador no se ejecuta en la máquina de un probador o en una máquina de producción, lo que conduce al caos.
Docker fue introducido para resolver este tipo de problemas. 💯
Why Docker?
Déjame contarte sobre mi experiencia personal de por qué Docker es tan esencial.
Estaba trabajando en un proyecto de pila completa con mi equipo, donde tuve que crear una aplicación que usara Angular en el frontend, Node.js en el backend y MySQL como base de datos. Nos atascamos en varios problemas mientras trabajábamos en esta aplicación usando múltiples tecnologías.
- El primer problema fue la compatibilidad del sistema operativo. Como estaba usando múltiples tecnologías, tuve que asegurarme de que todas las tecnologías fueran compatibles con el sistema operativo que estoy usando. Hubo casos en los que la versión de angular no funcionaba con la versión del sistema operativo que estaba usando, por lo que tuve que cambiar la versión del sistema operativo varias veces.
- Dado que la arquitectura de la aplicación que estaba construyendo cambió con el tiempo, me encontré en situaciones en las que las versiones y dependencias del software y las bibliotecas tenían que actualizarse. Enfrenté muchos problemas de compatibilidad antes de llegar a una versión estable de todas las tecnologías que estaba usando para mi aplicación. Actualizar incluso una sola herramienta utilizada en mi aplicación era un negocio arriesgado.
- Más tarde, tuve más desarrolladores trabajando en mi aplicación. Dado que la pila de tecnología era pesada, tuvieron que ejecutar varios comandos durante horas para configurar su entorno, que era compatible con la aplicación. Tuve que verificar y evaluar el entorno de cada desarrollador para asegurarme de que no haya discrepancias con la versión de tecnología que estaba usando.
- Finalmente, si alguno de los desarrolladores no se sentía cómodo con el sistema operativo que estaba usando para construir mi aplicación, era un desafío para él trabajar en la aplicación.
Todo esto dificultó el desarrollo, la construcción y el envío de la aplicación a tiempo. Aquí es donde Docker entró en escena. Resuelve todos los problemas que acabo de mencionar.
What is Docker?
Docker es una plataforma de contenedorización que empaqueta la aplicación y sus dependencias dentro de un contenedor para que la aplicación funcione a la perfección en cualquier entorno, ya sea de desarrollo, puesta en escena o producción.
Es una herramienta diseñada para facilitar la creación, implementación y ejecución de aplicaciones mediante el uso de contenedores. Los contenedores Docker son livianos alternativas a máquinas virtuales y utiliza el sistema operativo host. No tiene que preasignar RAM en contenedores como lo hace en máquinas virtuales.
Es una plataforma de código abierto para desarrolladores, administradores de sistemas y empresas para crear, enviar y ejecutar aplicaciones distribuidas sobre la marcha.
Para saber más sobre cómo funciona la ventana acoplable internamente, consulte la Arquitectura de Docker.
Docker Images, Containers, Dockerfile
Imagen de Docker
La imagen de Docker es una plantilla necesaria para ejecutar una aplicación. Consta de código de aplicación, bibliotecas, herramientas, dependencias, etc.
Las imágenes de Docker son archivos inmutables de solo lectura, que a veces también se denominan instantáneas. No inicia ni ejecuta una imagen acoplable; construyes un contenedor a través de él. Cuando se crea un contenedor a partir de una imagen de Docker, se crea una capa de contenedor encima de la capa de imagen.
Tiene que haber una imagen de la ventana acoplable base que se utilice para crear varias otras imágenes de la ventana acoplable con algunas modificaciones a la imagen base.
Centro acoplable es un repositorio de imágenes de Docker para casi todas las pilas de tecnología. Puede extraer una imagen acoplable de DockerHub y comenzar a crear contenedores.

Contenedores Docker
Los contenedores Docker son paquetes de software ejecutables que incluyen todas las dependencias necesarias para ejecutar una aplicación. Con los contenedores Docker, las aplicaciones pueden funcionar de manera eficiente en diferentes entornos informáticos.
A continuación se muestran las características de los contenedores Docker:
- Ligeros
- Sobrecarga mínima (CPU / IO / Red)
- Implementaciones más rápidas
- Fácilmente escalable
- Disminuir el consumo de almacenamiento
- Portátil, ejecútelo en todas partes.
- SO base mínima
- Aislamiento de aplicaciones
Dockerfile
Dockerfile es un script de shell que define todas las tareas que deben ejecutarse. A partir de un archivo de la ventana acoplable, crea una imagen de la ventana acoplable; a partir de la imagen de la ventana acoplable, crea un contenedor de la ventana acoplable.

Installing Docker
Docker se puede instalar fácilmente en varias plataformas Linux, Windows o macOS. Mira esta publicación en Cómo instalar Docker en Ubuntu, CentOS, Debian y Windows.
También, trabaja para Escritorio Docker está disponible para máquinas Windows y Mac. Es una aplicación ejecutable que es muy fácil de instalar y ayuda a crear y organizar aplicaciones en entornos Windows y Mac.
Docker Editions and Pricing
Hay dos ediciones de Docker:
- Edición comunitaria (CE)
- Edición Enterprise (EE)
La edición comunitaria de Docker es de código abierto y de uso gratuito. Docker CE tiene como objetivo el enfoque "hágalo usted mismo" en el que DevOps los ingenieros pueden contenerizar sus aplicaciones por su cuenta.
La edición empresarial de Docker viene con tres versiones: enlace , estándar, y avanzado. La edición básica viene con una plataforma docker, soporte y certificación, mientras que las ediciones estándar y avanzada vienen con administración de contenedores y funciones de escaneo de seguridad de docker agregadas a las funciones de la edición básica.
La mayoría de los expertos en tecnología usan Docker de forma gratuita. Pero si necesita funciones avanzadas, puede usar la versión paga de Docker. El precio depende de características como la administración de repositorios, características de CI / CD, administración de usuarios, herramientas de desarrollo y opciones de soporte.
A continuación se muestran los detalles del plan de Docker:

Ahora que conoce los fundamentos de Docker, permítame mostrarle un ejemplo de Docker muy simple.
Docker Hello World Container
Voy a sacar un imagen de ventana acoplable hola-mundo desde DockerHub y compile la imagen para crear un contenedor acoplable que ejecutará la aplicación. Esta imagen contiene una aplicación sencilla para imprimir un mensaje de saludo desde Docker.
En primer lugar, necesito extraer la imagen de la ventana acoplable hello-world en mi máquina Ubuntu.
Nota:: esto supone que Docker ya está instalado. Si aún no lo ha hecho, consulte el guía de instalación.
geekflare@geekflare:~$ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Status: Downloaded newer image for hello-world:latest
Compruebe si se ha extraído la imagen de la ventana acoplable.
geekflare@geekflare:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 7 months ago 13.3kB
kubernetesui/dashboard v2.0.0-beta8 eb51a3597525 8 months ago 90.8MB
geekflare_mongodb latest 095d17727ca0 12 months ago 325MB
Ejecute el siguiente comando para crear un contenedor y ejecutar la aplicación.
geekflare@geekflare:~$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Ahora, enumere todos los contenedores docker. Puede ver que el contenedor hello-world se ejecutó hace 1 minuto.
geekflare@geekflare:~$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a1056caffc4 hello-world "/hello" 1 minutes ago Exited (0) 1 minutes ago zealous_bose
b0095c1e5536 geekflare_mongodb "/bin/sh -c usr/bin/…" 12 months ago Exited (0) 12 months ago mongo_container
Empiece a explorar Docker; prueba estos fundamentales comandos de docker.
Running Nginx Inside a Docker Container
Aquí, le mostraré cómo implementar Nginx dentro de un contenedor.
El siguiente comando busca una imagen de Nginx localmente. Como no hay una imagen local disponible, extrae la imagen de la ventana acoplable de Nginx desde el concentrador de la ventana acoplable. Luego crea un contenedor con el nombre nginx_geekflare
utilizando la imagen de la ventana acoplable de Nginx y ejecuta Nginx en el puerto 80.
geekflare@geekflare:~$ docker run --name nginx_geekflare -p 80:80 -d nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
bf5952930446: Pull complete
ba755a256dfe: Pull complete
c57dd87d0b93: Pull complete
d7fbf29df889: Pull complete
1f1070938ccd: Pull complete
Digest: sha256:36b74457bccb56fbf8b05f79c85569501b721d4db813b684391d63e02287c0b2
Status: Downloaded newer image for nginx:latest
fdad18387b27b48b8f2e14f8641791cc4d5edf667cc664198b67579cd76a5162
Cuando enumera las imágenes de Docker disponibles en su sistema, puede ver que se extrajo la imagen de Nginx Docker.
geekflare@geekflare:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 08393e824c32 4 days ago 132MB
hello-world latest bf756fb1ae65 7 months ago 13.3kB
kubernetesui/dashboard v2.0.0-beta8 eb51a3597525 8 months ago 90.8MB
geekflare_mongodb latest 095d17727ca0 12 months ago 325MB
Ejecute el siguiente comando para enumerar todos los contenedores en ejecución. Puedes ver el contenedor. nginx_geekflare
está corriendo en 0.0.0.0:80
geekflare@geekflare:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fdad18387b27 nginx "/docker-entrypoint.…" 58 seconds ago Up 32 seconds 0.0.0.0:80->80/tcp nginx_geekflare
1a1056caffc4 hello-world "/hello" About an hour ago Exited (0) About an hour ago zealous_bose
b0095c1e5536 geekflare_mongodb "/bin/sh -c usr/bin/…" 12 months ago Exited (0) 12 months ago mongo_container
Vaya a su navegador y abra 0.0.0.0:80, puede ver que nginx está funcionando dentro de un contenedor.

Common Docker Use Cases
Simplificación de la configuración: Docker puede ejecutarse en cualquier plataforma con la ayuda de su configuración sin la sobrecarga real de una máquina virtual.
Le permite poner el archivo de configuración en el código y pasar variables de entorno para adaptarse a diferentes entornos. Para que una imagen de la ventana acoplable se pueda usar en un entorno diferente.
Gestión de código: El código viaja a través de un entorno diferente en su viaje desde el desarrollo hasta la producción.
Cada entorno tiene una ligera variación que el otro. Docker elimina esta diferencia al proporcionar un entorno coherente, lo que hace que el desarrollo y la codificación sean mucho más cómodos.

Como las imágenes de Docker son inmutables, tienen la ventaja de no tener ningún cambio en el entorno de la aplicación desde el desarrollo hasta la producción.
Productividad de desarrollo mejorada: Los dos objetivos esenciales en el ecosistema de desarrollo son que el entorno de desarrollo se repita lo más cerca posible del entorno de producción y el próximo objetivo es conseguir que el código de calidad se entregue lo antes posible.
Docker permite que el código se ejecute en un contenedor que refleja el entorno de producción y, a diferencia de la VM, Docker tiene una menor capacidad de memoria general, lo que ayuda a que se ejecuten varios servicios.
El otro objetivo se logra cuando usamos el volumen compartido de Docker para que el código de la aplicación esté disponible para el contenedor desde el host. Esto permite al desarrollador editar el código fuente desde su plataforma y editor, lo que se reflejará en el entorno de ejecución dentro de Docker.
Aislamiento de aplicaciones: Hay casos en los que puede ser necesario aislar la aplicación, por ejemplo, API servidores que requieren diferentes apache y un conjunto diferente de dependencias.
Ejecutar servidores API en diferentes contenedores es una solución mucho mejor.
Capacidades de depuración: Docker proporciona numerosas herramientas que funcionan bien con contenedores, con la capacidad de insertar puntos de control dentro de contenedores y también diferentes contenedores, que son bastante esenciales al probar aplicaciones.
Despliegue Rápido: Los contenedores Docker se pueden crear con bastante rapidez, lo que se logra ya que los contenedores no arrancan un sistema operativo sino que simplemente ejecutan la aplicación.
Una vez configurados, te dan la tranquilidad de que una vez que el código haya funcionado, funcionará en todos los entornos.
Conclusión
Docker, con sus amplios beneficios, se está convirtiendo en una valiosa adición a la infraestructura de TI. Espero que lo anterior te dé una idea al respecto. Si está interesado en tomar cursos en línea, le recomendaría tomar Curso en línea Docker Mastery.