GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

¿Qué es Docker (y los contenedores de Linux?)

Hace un tiempo, alrededor del lanzamiento de la versión 3 del kernel de Linux, se introdujo el concepto de espacios de nombres y contenedorización a través de un módulo llamado lxc (contenedores de Linux).

La idea detrás de un contenedor es similar a la idea de una máquina virtual. Por ejemplo, con la virtualización, tiene un servidor (el "host") que ejecuta algo como KVM o VMware. Las máquinas que se ejecutan debajo de él se llaman invitados. Son computadoras totalmente autónomas que se ejecutan sobre el host.

Los contenedores llevan este concepto al siguiente nivel. Los contenedores ayudan especialmente a los desarrolladores (pero también a los administradores de sistemas) a implementar aplicaciones o servicios rápidamente. Los contenedores son máquinas Linux muy pequeñas que se ejecutan como un proceso normal de Linux (en espacio de usuario ). Un servidor Linux promedio tiene un tamaño de gigabytes y tiene un núcleo repleto de controladores útiles para todo tipo de hardware, etc. Un contenedor, por el contrario, tiene solo unos pocos cientos de megabytes de tamaño. Una máquina virtual se iniciará en minutos, un contenedor se iniciará, incluida su aplicación prevista, en unos segundos o menos. Se ejecuta tal como esperaría que se ejecutara cualquier aplicación normal de Linux:como un proceso que puede ver usando el comando ps.

El siguiente diagrama de la gente de CoreOS muestra bien la relación entre los contenedores y el sistema operativo. En la parte superior, puede ver un servidor Linux normal, ejecutando todos los servicios habituales que pueda imaginar, como Java, el servidor web nginx, etc. Es probable que también se ejecuten algunas otras aplicaciones.

En la Figura 2, puede ver un ejemplo de un sistema operativo orientado a la contenedorización. Solo tiene aplicaciones limitadas y mínimas, como el servidor ssh en ejecución. Todas las demás aplicaciones ahora se ejecutan dentro de contenedores completamente aislados.

Seres efímeros

Los contenedores están hechos idealmente para tener un solo propósito:imagine que tiene una aplicación que usa JBoss y PostgreSQL. Es probable que tenga un contenedor para los componentes JBoss y PostgreSQL. Los dos contenedores están aislados entre sí, pero es posible vincularlos para que puedan comunicarse entre sí. Los contenedores también están diseñados para ser efímeros:una vez que se ha cumplido su propósito, los vuelas, siempre puedes hacer girar otro en segundos. Esto también significa que los datos almacenados dentro de un contenedor  no persistente. Si desea que los datos, como bases de datos o sitios web, permanezcan, puede colocarlos en un volumen de almacenamiento exportado en el servidor host. En las mejores prácticas de seguridad, actualizaría su imagen base con nuevos parches o procedimientos de refuerzo de seguridad, y luego continuaría con su aplicación. Después de esto, destruiría su contenedor de la semana pasada y usaría el contenedor nuevo y más seguro la próxima semana.

Los contenedores encajan muy bien con todo el SaaS (software como modelo de servicio), y también permite que los desarrolladores y el personal de operaciones trabajen juntos de una manera más amigable (léase modo DevOps). Pero no nos adelantemos aquí, las herramientas no solucionarán los problemas culturales, ¡ese es un tema completamente diferente para otro sitio web!

Docker

Docker existe desde hace un tiempo. Docker llevó a Linux lo que lxc no pudo:facilidad de uso. Una vez que los desarrolladores descubrieron lo poderoso que era activar un contenedor docker en su computadora portátil y tener la garantía de que funcionaría exactamente de la misma manera en un servidor en otro lugar, con la mayor facilidad, rápidamente se convirtió en una obviedad.

Docker tiene sus críticos, algunos (como el equipo de coreOS) creen que Docker no es lo suficientemente seguro y se están comercializando demasiado (por eso crearon a rkt como un competidor de Docker), pero lo aman o lo odian, Docker tiene un una gran cantidad de seguidores, y no solo en las empresas que cabría esperar, como Amazon y Google.

Más lectura

Puede leer más sobre la contenedorización en los siguientes sitios web:

LinuxContainers.org

Docker:¿Qué es Docker?

Amazon AWS:¿Qué son ¿Contenedores?

Rkt (pronunciado Rocket), de CoreOS


Docker
  1. Desmitificando espacios de nombres y contenedores en Linux

  2. ¿Qué es Podman y cómo instalar Podman en Linux?

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

  4. ¿Cuál es la diferencia entre un contenedor de Linux y una imagen?

  5. ¿Qué es Podman y en qué se diferencia de Docker?

Cómo instalar WordPress en Docker (Windows, macOS y Linux)

¿Qué es Docker Compose y cómo se usa?

Cómo instalar Docker y Docker Compose en Linux

Cómo instalar Docker en Rocky Linux y AlmaLinux

Contenedores Docker y Linux en Windows, con o sin máquinas virtuales Hyper-V

Exploración de ASP.NET Core con Docker en contenedores de Linux y Windows