GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Qué es Docker?

Introducción

Docker es una de las plataformas basadas en contenedores más populares que atrae la atención de muchos equipos de desarrollo. Cada vez más empresas se están cambiando a Docker debido a su confiabilidad, rendimiento y funcionalidad.

Por lo tanto, es esencial comprender este software de contenedorización de código abierto y los componentes subyacentes que lo impulsan.

En este artículo, aprenderá qué es Docker, cuáles son los componentes más importantes de Docker y las ventajas y desventajas de usar la plataforma.

¿Qué es Docker?

Docker es una plataforma de contenedorización de código abierto que se utiliza para desarrollar, implementar y administrar aplicaciones en entornos virtualizados livianos llamados contenedores.

Se utiliza principalmente como una plataforma de desarrollo de software para desarrollar aplicaciones distribuidas que funcionan de manera eficiente en diferentes entornos. Al hacer que el sistema de software sea agnóstico, los desarrolladores no tienen que preocuparse por los problemas de compatibilidad. Empaquetar aplicaciones en entornos aislados (contenedores) también facilita el desarrollo, la implementación, el mantenimiento y el uso de aplicaciones.

Dado que Docker utiliza la virtualización para crear contenedores para almacenar aplicaciones, el concepto puede parecer similar a las máquinas virtuales. Aunque ambos representan entornos virtuales aislados utilizados para el desarrollo de software, existen diferencias importantes entre contenedores y máquinas virtuales. La distinción más importante es que los contenedores Docker son más ligeros, más rápidos y más eficientes en recursos que las máquinas virtuales.

Instalar Docker es simple. Para obtener instrucciones paso a paso, consulta:

Cómo instalar Docker en UbuntuCómo instalar Docker en CentOSCómo instalar Docker en Debian

¿Qué son los contenedores?

Los contenedores Docker son entornos de tiempo de ejecución virtualizados ligeros para ejecutar aplicaciones. Cada contenedor representa un paquete de software que contiene código, herramientas del sistema, tiempo de ejecución, bibliotecas, dependencias y archivos de configuración necesarios para ejecutar una aplicación específica. Son independientes y están aislados del host y otras instancias que se ejecutan en el host.

Los contenedores se basan en imágenes de Docker. Un contenedor se crea ejecutando una imagen en Docker Engine. Como estos son los términos más comunes de Docker, asegúrese de comprender la diferencia entre las imágenes de Docker y los contenedores de Docker.

El mismo hardware puede albergar varios contenedores. A diferencia de las máquinas virtuales, los contenedores se virtualizan a nivel de aplicación. Por lo tanto, comparten el kernel del sistema operativo con el host y virtualizan un sistema operativo encima. Esto significa que utiliza menos recursos y mantiene entornos virtuales livianos que son rápidos y fáciles de configurar.

Además de ser independientes del sistema, los contenedores son rápidos y fáciles de iniciar, configurar, agregar, detener y eliminar. Los desarrolladores pueden trabajar en la misma aplicación en diferentes entornos sabiendo que esto no afectará su rendimiento. Además, pueden compartir datos entre contenedores usando volúmenes de datos.

Para maximizar el rendimiento de los contenedores, asegúrese de implementar las mejores prácticas de contenedores de Docker.

¿Para qué se utiliza Docker?

Docker se utiliza para:

  • Ejecución de varias cargas de trabajo con menos recursos.
  • Aislamiento y segregación de aplicaciones.
  • Estandarizar los entornos para garantizar la coherencia entre los ciclos de desarrollo y lanzamiento.
  • Racionalización del ciclo de vida de desarrollo y soporte de flujos de trabajo de CI/CD.
  • Desarrollo de cargas de trabajo altamente portátiles que pueden ejecutarse en plataformas de varias nubes.

Además, se utiliza como:

  • Una alternativa rentable a las máquinas virtuales.
  • Un sistema de control de versiones para una aplicación.

Una breve historia de Docker

Docker se presentó como un proyecto de código abierto en marzo de 2013 en PyCon. Antes de centrarse en los contenedores, el proyecto comenzó como una solución de plataforma como servicio denominada DotCloud en 2008. Sin embargo, muchos desarrolladores mostraron un gran interés específicamente por la tecnología subyacente de DotCloud:los contenedores de software.

Desde entonces, Docker ha llamado la atención de muchos proveedores de tecnología y empresas de alto perfil.

Componentes principales de Docker

La herramienta consta de varios componentes, cada uno de los cuales desempeña un papel importante en la plataforma.

Motor acoplable

Docker Engine (DE) está instalado en la máquina host y representa el núcleo del sistema Docker. Es un sistema de tiempo de ejecución liviano y la tecnología cliente-servidor subyacente que crea y administra contenedores.

Docker Engine consta de tres componentes:

  • Servidor - el demonio Docker (dockerd), que es responsable de crear y administrar contenedores.
  • API de descanso - establece la comunicación entre los programas y Docker e indica a Dockerd qué hacer.
  • Interfaz de línea de comandos (CLI) - utilizado para ejecutar comandos de Docker.

Imágenes acoplables

Las imágenes de Docker son plantillas que se utilizan para crear contenedores. Al igual que las instantáneas de las máquinas virtuales, las imágenes de Docker son archivos inmutables de solo lectura que consisten en el código fuente, bibliotecas, dependencias, herramientas y cualquier otro archivo necesario para ejecutar una aplicación. Cada imagen se crea a partir de un Dockerfile, que contiene instrucciones específicas para crear una imagen de Docker en particular.

Una vez que domine la creación de imágenes de Docker a partir de Dockerfiles, podrá crear imágenes y contenedores personalizados de forma más sencilla y rápida.

Además de acelerar las compilaciones de Docker, las imágenes también son útiles para aumentar la reutilización y esencialmente disminuir el uso del disco. Dado que desea mantener sus contenedores livianos y rápidos, es vital mantener imágenes pequeñas. Utilizar una base de imagen más clara, evitar capas innecesarias y usar el archivo .dockerignore son solo algunas formas de mantener pequeñas las imágenes de Docker.

Dockerfile

Un Dockerfile es un script que consta de un conjunto de instrucciones sobre cómo crear una imagen de Docker. Estas instrucciones incluyen la especificación del sistema operativo, los idiomas, las variables de entorno, las ubicaciones de los archivos, los puertos de red y otros componentes necesarios para ejecutar la imagen. Todos los comandos del archivo se agrupan y ejecutan automáticamente.

Una imagen tiene varias capas. Una vez que ejecuta una imagen de Docker para crear un contenedor, se agrega una nueva capa de lectura y escritura. Esto a veces se denomina capa contenedora. La capa adicional le permite realizar cambios en la imagen base, que puede confirmar para crear una nueva imagen de Docker para uso futuro.

Centro acoplable

Docker Hub es el mayor repositorio basado en la nube de imágenes de contenedores proporcionado por Docker. Proporciona más de 100 000 imágenes disponibles para su uso creadas por proyectos de código abierto, proveedores de software y la comunidad de Docker.

La plataforma le permite enviar sus aplicaciones a cualquier lugar rápidamente, colaborar con compañeros de equipo y automatizar compilaciones para una integración más rápida a una canalización de desarrollo.

Al igual que GitHub, los desarrolladores insertan y extraen imágenes de contenedores de Docker Hub y deciden si mantenerlas públicas o privadas.

Volúmenes de Docker

En lugar de agregar nuevas capas a una imagen, una mejor solución para conservar los datos producidos por un contenedor en ejecución es usar volúmenes de Docker. Esta útil herramienta permite a los usuarios guardar datos, compartirlos entre contenedores y montarlos en otros nuevos. Los volúmenes de Docker son independientes del ciclo de vida del contenedor, ya que se almacenan en el host.

Hay diferentes formas de crear y montar un volumen de Docker mientras se lanza un contenedor. Obtenga más información en Volúmenes de Docker:Cómo crear y empezar.

Composición acoplable

Al ejecutar y administrar varios contenedores simultáneamente, Docker Compose es una herramienta útil diseñada para simplificar el proceso. Encadena múltiples contenedores necesarios para trabajar juntos y los controla a través de un solo comando coordinado.

Docker Compose se utiliza para iniciar, ejecutar, comunicar y cerrar contenedores con un comando. Esto se hace mediante un archivo YAML que configura los servicios de la aplicación.

Instalar Docker Compose en CentOSInstalar Docker Compose en Ubuntu

Escritorio Docker

Docker Desktop, anteriormente conocido como Docker para Windows y Docker para Mac, es una aplicación que le permite comenzar a crear y ejecutar contenedores en Windows y Mac en cuestión de minutos. Es una forma sencilla de instalar y configurar todo el entorno de desarrollo de Docker. Incluye Docker Engine, Docker Compose, cliente Docker CLI, Docker Content Trust, Kubernetes y Credential Helper.

La herramienta se utiliza para crear y compartir microservicios y aplicaciones en contenedores en varios lenguajes y marcos, en cualquier plataforma en la nube.

Para obtener más información, consulte la documentación oficial de Docker en Docker Desktop.

Ventajas de Docker

  • Coherencia . Docker garantiza la confiabilidad de que su aplicación se ejecuta de la misma manera en múltiples entornos. Los desarrolladores que trabajan en diferentes máquinas y sistemas operativos pueden trabajar juntos en la misma aplicación sin problemas ambientales.
  • Automatización . La plataforma le permite automatizar tareas tediosas y repetitivas y programar trabajos sin intervención manual.
  • Despliegues más rápidos . Dado que los contenedores virtualizan el sistema operativo, no hay tiempo de arranque al iniciar instancias de contenedores. Por lo tanto, puede realizar implementaciones en cuestión de segundos. Además, puede compartir contenedores existentes para crear nuevas aplicaciones.
  • Soporte de CI/CD . Docker funciona bien con las prácticas de CI/CD, ya que acelera las implementaciones, simplifica las actualizaciones y permite que los compañeros de equipo trabajen juntos de manera eficiente.
  • Retrocesos y control de versiones de imágenes . Un contenedor se basa en una imagen de Docker que puede tener varias capas, cada una de las cuales representa cambios y actualizaciones en la base. Esta característica no solo acelera el proceso de compilación, sino que también proporciona control de versión sobre el contenedor. Esto permite a los desarrolladores volver a una versión anterior si surge la necesidad.
  • Modularidad . Los contenedores son entornos virtuales independientes y aislados. En una aplicación de varios contenedores, cada contenedor tiene una función específica. Al segregar la aplicación, los desarrolladores pueden trabajar fácilmente en una parte en particular sin eliminar toda la aplicación.
  • Recursos y rentabilidad . Como los contenedores no incluyen sistemas operativos invitados, son mucho más ligeros y pequeños que las máquinas virtuales. Ocupan menos memoria y reutilizan componentes gracias a los volúmenes de datos e imágenes. Además, los contenedores no requieren grandes servidores físicos, ya que pueden ejecutarse completamente en la nube.

Desventajas de Docker

  • Sin interfaz gráfica . Docker no es la mejor opción si desea ejecutar aplicaciones que requieren una interfaz gráfica. Es principalmente para albergar aplicaciones que se ejecutan en la línea de comandos.
  • Problemas de seguridad . Aunque Docker brinda seguridad al aislar los contenidos del host y entre sí, existen ciertos riesgos de seguridad específicos de Docker. Pueden surgir muchos problemas de seguridad potenciales al trabajar con contenedores, así que asegúrese de adoptar las mejores prácticas de seguridad de Docker que pueden ayudarlo a prevenir ataques y violaciones de privilegios.
  • Curva de aprendizaje . Incluso los desarrolladores experimentados con la infraestructura de VM necesitan algo de tiempo para acostumbrarse a los conceptos de Docker y cómo funcionan. Si cambia a Docker, asegúrese de tener en cuenta la curva de aprendizaje necesaria.

Ubuntu
  1. Qué es un contenedor Docker:una guía introductoria para principiantes

  2. ¿Cuál es la diferencia entre los contenedores LXC, LXD y Docker?

  3. Cómo usar Docker Compose

  4. Cómo conectar contenedores Docker

  5. Cómo listar contenedores Docker

Traefik para contenedores Docker en Ubuntu

¿Qué es un manifiesto de imagen de Docker?

Cómo ejecutar contenedores Docker

Cómo eliminar contenedores Docker

Cómo detener los contenedores de Docker

Qué hacer si un contenedor Docker sale inmediatamente