Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Comprensión de Docker para principiantes: la tecnología de contenedores

seguridad docker
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

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.

dockerhub-geekflare

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.

archivo 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:

precios de docker - geekflare

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.

contenedor nginx

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.

código

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.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre DevOps
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder