• ¡Obtenga la seguridad de la aplicación de la manera correcta! Detectar, proteger, monitorear, acelerar y más ...
  • 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, estaba construyendo cambió con el tiempo, y 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 fue 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 me hizo la vida difícil para desarrollar, construir y enviar 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 de la ventana acoplable; construyes un contenedor a través de él. Cuando se crea un contenedor a partir de una imagen de Docker, crea una capa de contenedores 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.

    Docker Hub es un repositorio de imágenes de Docker para casi todas las pilas de tecnología. Puede extraer una imagen de la ventana 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.

    dockerfile

    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 construir y contener 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 contener su aplicación 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 la plataforma, el soporte y la certificación de la ventana acoplable, mientras que las ediciones estándar y avanzada incluyen la administración de contenedores y las funciones de escaneo de seguridad de la ventana acoplable 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.

    [email protected]:~$ 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.

    [email protected]:~$ 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.

    [email protected]:~$ 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 de Docker. Puede ver que el contenedor hello-world se ejecutó hace 1 minuto.

    [email protected]:~$ 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.

    [email protected]:~$ 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.

    [email protected]:~$ 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 contenedor nginx_geekflare está corriendo en 0.0.0.0:80

    [email protected]:~$ 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.

    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 vastos beneficios, se está convirtiendo en una valiosa adición a la infraestructura de TI. Espero que lo anterior les dé una idea al respecto. Mira otros artículos de Docker para ensuciarse las manos. Si está interesado en tomar cursos en línea, recomendaría tomar Curso en línea Docker Mastery.