Como podemos ver, docker es una herramienta que nos permite construir, compartir y ejecutar el código que desarrollamos muy rápidamente. Es una excelente alternativa para desarrollar todos nuestros proyectos y poder probar su ejecución en diferentes entornos. Lo más importante es ver cómo las características de desarrollo y operaciones convergen en un solo punto para brindar un servicio.
Compose es una herramienta para definir y ejecutar aplicaciones Docker de contenedores múltiples. Con Compose, utiliza un archivo YAML para configurar los servicios de su aplicación. Luego, con un solo comando, crea e inicia todos los servicios desde su configuración.
Compose funciona en todos los entornos: producción, puesta en escena, desarrollo, pruebas, así como flujos de trabajo de CI.
Usar Compose es básicamente un proceso de tres pasos:
Defina el entorno de su aplicación con un Dockerfile para que pueda reproducirse en cualquier lugar.
Defina los servicios que componen su aplicación docker-compose.yml para que puedan ejecutarse juntos en un entorno aislado.
Ejecutar docker-compose up y Compose inicia y ejecuta toda su aplicación.
El Docker registry es una aplicación del lado del servidor sin estado y altamente escalable que almacena y le permite distribuir imágenes de Docker.
¿Por qué usarlo?
Debe usar el Registry si desea:
Controlar estrictamente dónde se almacenan sus imágenes.
Poseer completamente su canal de distribución de imágenes.
Integre el almacenamiento y la distribución de imágenes en su flujo de trabajo de desarrollo interno.
Alternativas
Se recomienda a los usuarios que buscan una solución lista para usar que no requiera mantenimiento, que se dirijan al Docker Hub, que proporciona un registro alojado de uso gratuito, además de características adicionales (cuentas de la organización, compilaciones automatizadas y más).
Comandos básicos
Corra un contenedor con la imagen de registry
$ docker run -d -p 5000:5000 --name registry registry:2
Extraiga (o cree) alguna imagen de Docker hub
$ docker pull ubuntu
Etiquete la imagen para que apunte a su registry
$ docker image tag ubuntu localhost:5000/myfirstimage
Docker Hub es un servicio proporcionado por Docker para encontrar y compartir imágenes de contenedores con su equipo. Proporciona las siguientes características principales:
Repositorios: imágenes de contenedores de inserción y extracción.
Equipos y organizaciones: administre el acceso a repositorios privados de imágenes de contenedores.
Imágenes oficiales: extraiga y use imágenes de contenedores de alta calidad proporcionadas por Docker.
Imágenes del editor: extraiga y use imágenes de contenedores de alta calidad proporcionadas por proveedores externos. Las imágenes certificadas también incluyen soporte y garantía de compatibilidad con Docker Enterprise.
Compilaciones: cree automáticamente imágenes de contenedor desde GitHub y Bitbucket y envíelas a Docker Hub.
Webhooks: activa acciones después de una inserción exitosa en un repositorio para integrar Docker Hub con otros servicios.
Docker construye las imágenes al leer las instrucciones que se encuentran en el fichero dockerfile.
Dockerfile es el nombre de un documento de texto que contiene todos los comandos necesarios para poder crear imágenes (Dependencias, Programas, Código fuente, Configuraciones).
Construir la primera imagen
Primero se debe crear un directorio para el proyecto y después un archivo llamado Dockerfile.
Luego se edita el archivo Dockerfile con un editor de texto.
FROM: Es una etiqueta que le indica a Docker durante la construcción que se va a partir desde un lugar en especifico, en este caso, desde la imagen base ubuntu:16.04.
ENTRYPOINT: Permite configurar el contenedor para que sea iniciado como un ejecutable.
Utilizar el siguiente comando:
$ docker image build --tag ejemplo .
Utilizar el siguiente comando:
$ docker image ls
Utilizar el siguiente comando:
$ docker container run ejemplo
Construir la primera imagen – Comandos
Utilizar el siguiente comando:
$ docker image history --help
Permite conocer de una imagen el conjunto de instrucciones que fueron ejecutadas para su construcción.
Instrucciones en Dockerfile
LABEL: Esta etiqueta es la encargada de agregar los metadatos a nuestra imagen; utilizando (llave, valor).
COPY: Copiar ficheros o directorios desde la máquina hacia la estructura de ficheros de la imagen que se está creando.
Una imagen es una plantilla de solo lectura con instrucciones para crear un contenedor Docker.
A menudo, una imagen se basa en otra imagen, con alguna personalización adicional. Por ejemplo, puede crear una imagen basada en la imagen de ubuntu, pero a su vez instalar el servidor web Apache y sus aplicaciones, así como los detalles de configuración necesarios para que su aplicación se ejecute.
Puede crear sus propias imágenes o solo puede usar las creadas por otros publicadas en un registro.
Para crear su propia imagen, cree un Dockerfile con una sintaxis simple para definir los pasos necesarios para crear la imagen y ejecutarla.
Cada instrucción en un Dockerfile crea una capa en la imagen. Cuando cambia el Dockerfile y reconstruye la imagen, solo se reconstruyen las capas que han cambiado. Esto es parte de lo que hace que las imágenes sean tan livianas, pequeñas y rápidas, en comparación con otras tecnologías de virtualización.
Contenedores
Un contenedor es una instancia ejecutable de una imagen. Puede crear, iniciar, detener, mover o eliminar un contenedor utilizando Docker API o CLI. Puede conectar un contenedor a una o más redes, adjuntarle almacenamiento o incluso crear una nueva imagen en función de su estado actual.
Por defecto, un contenedor está relativamente bien aislado de otros contenedores y su máquina host. Puede controlar cuán aislados están la red, el almacenamiento u otros subsistemas subyacentes de un contenedor de otros contenedores o de la máquina host.
Un contenedor se define por su imagen, así como por las opciones de configuración que le proporcione cuando lo cree o lo inicie. Cuando se elimina un contenedor, cualquier cambio en su estado que no esté almacenado en un almacenamiento persistente desaparecerá.
Puedes ver toda la información de esta sección del blog, en una diapositiva para que la compartas en tú salón de clase. Instalar Docker Engine en Ubuntu
Docker es una plataforma abierta para desarrollar, enviar y ejecutar aplicaciones. Docker le permite separar sus aplicaciones de su infraestructura para que pueda entregar el software rápidamente. Con Docker, puede administrar su infraestructura de la misma manera que administra sus aplicaciones. Al aprovechar las metodologías de Docker para enviar, probar e implementar código rápidamente, puede reducir significativamente el retraso entre escribir código y ejecutarlo en producción.
Docker ofrece la capacidad de empaquetar y ejecutar una aplicación en un entorno aislado llamado contenedor. El aislamiento y la seguridad le permiten ejecutar muchos contenedores simultáneamente en un host determinado.
Los contenedores son livianos porque no necesitan la carga adicional de un hipervisor, sino que se ejecutan directamente dentro del núcleo de la máquina host.
Esto significa que puede ejecutar más contenedores en una combinación de hardware determinada que si estuviera utilizando máquinas virtuales. ¡Incluso puede ejecutar contenedores Docker dentro de máquinas host que en realidad son máquinas virtuales!
¿Para qué puedo usar Docker?
Entrega rápida y consistente de sus aplicaciones
Docker optimiza el ciclo de vida del desarrollo al permitir que los desarrolladores trabajen en entornos estandarizados utilizando contenedores locales que proporcionan sus aplicaciones y servicios. Los contenedores son excelentes para la integración continua y los flujos de trabajo de entrega continua (CI / CD).
Considere el siguiente escenario de ejemplo:
Sus desarrolladores escriben código localmente y comparten su trabajo con sus colegas utilizando contenedores Docker.
Usan Docker para llevar sus aplicaciones a un entorno de prueba y ejecutar pruebas automáticas y manuales.
Cuando los desarrolladores encuentran errores, pueden corregirlos en el entorno de desarrollo y volver a implementarlos en el entorno de prueba para pruebas y validación.
Cuando se completa la prueba, obtener la solución para el cliente es tan simple como llevar la imagen actualizada al entorno de producción.