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

Cuándo y por qué usar Docker

¿Qué es Docker?

Desde su lanzamiento en 2012, Docker se ha convertido en una de las tecnologías de más rápido crecimiento en desarrollo web y devops. Sin embargo, como cualquier nueva tecnología, todavía está en desarrollo, tiene algunas limitaciones y no es adecuada para todos los proyectos. Esta guía proporciona una descripción general de las ventajas y desventajas de Docker para que pueda decidir si sería una buena adición a su proyecto.

Para obtener una introducción más básica a los conceptos y la terminología de Docker, consulte nuestra guía Introducción a Docker.

Beneficios de Docker

  1. Reproducibilidad :similar a una aplicación Java, que se ejecutará exactamente igual en cualquier dispositivo capaz de ejecutar una máquina virtual Java, se garantiza que un contenedor Docker será idéntico en cualquier sistema que pueda ejecutar Docker. Las especificaciones exactas de un contenedor se almacenan en un Dockerfile. Al distribuir este archivo entre los miembros del equipo, una organización puede garantizar que todas las imágenes creadas a partir del mismo Dockerfile funcionarán de manera idéntica. Además, contar con un entorno constante y bien documentado facilita el seguimiento de su aplicación y la identificación de problemas.

  2. Aislamiento :Las dependencias o configuraciones dentro de un contenedor no afectarán ninguna instalación o configuración en su computadora, o en cualquier otro contenedor que pueda estar ejecutándose. Al usar contenedores separados para cada componente de una aplicación (por ejemplo, un servidor web, un front-end y una base de datos para hospedar un sitio web), puede evitar dependencias conflictivas. También puede tener múltiples proyectos en un solo servidor sin preocuparse por crear conflictos en su sistema.

  3. Seguridad :con advertencias importantes (discutidas a continuación), separar los diferentes componentes de una aplicación grande en diferentes contenedores puede tener beneficios de seguridad:si un contenedor se ve comprometido, los demás no se ven afectados.

  4. Puerto acoplable :para casos de uso comunes o simples, como una pila LAMP, la capacidad de guardar imágenes y enviarlas a Docker Hub significa que ya hay muchas imágenes bien mantenidas disponibles. Ser capaz de extraer rápidamente una imagen prefabricada o compilar a partir de un Dockerfile mantenido oficialmente puede hacer que este tipo de proceso de configuración sea extremadamente rápido y simple.

  5. Gestión del entorno :Docker facilita el mantenimiento de diferentes versiones de, por ejemplo, un sitio web usando nginx. Puede tener un contenedor separado para pruebas, desarrollo y producción en el mismo Linode e implementarlo fácilmente en cada uno.

  6. Integración Continua :Docker funciona bien como parte de canalizaciones de integración continua con herramientas como Travis, Jenkins y Wercker. Cada vez que se actualiza su código fuente, estas herramientas pueden guardar la nueva versión como una imagen de Docker, etiquetarla con un número de versión y enviarla a Docker Hub, luego implementarla en producción.

Cuándo usar Docker

Si su aplicación encaja en una o más de las siguientes categorías, Docker puede ser una buena opción:

  1. Aprender nuevas tecnologías :para comenzar con una nueva herramienta sin perder tiempo en la instalación y configuración, Docker ofrece un entorno aislado y desechable. Muchos proyectos mantienen imágenes de Docker con sus aplicaciones ya instaladas y configuradas. Por ejemplo, si desea verificar un sistema de seguimiento distribuido como Zipkin, puede tener una configuración funcional en localhost simplemente ejecutando:

    sudo docker run -d -p 9411:9411 openzipkin/zipkin
    
  2. Casos de uso básicos :Extraer imágenes de Docker Hub también es una buena solución si su aplicación es lo suficientemente básica o estándar para funcionar con una imagen de Docker predeterminada. Casos como alojar un sitio web usando una pila LAMP, usar un proxy inverso o configurar un servidor de Minecraft a menudo tienen una imagen oficial o bien respaldada disponible en DockerHub. Si la configuración predeterminada en estas imágenes es aceptable para sus necesidades, extraer la imagen puede ahorrarle mucho tiempo que, de lo contrario, se dedicaría a configurar su entorno e instalar las herramientas necesarias.

  3. Aislamiento de aplicaciones :Si desea ejecutar varias aplicaciones en un servidor, mantener los componentes de cada aplicación en contenedores separados evitará problemas con la administración de dependencias.

  4. Equipos de desarrolladores :si tiene desarrolladores que trabajan con diferentes configuraciones, Docker proporciona una manera conveniente de tener entornos de desarrollo locales que se asemejan mucho al entorno de producción, sin necesidad de conectarse a una caja remota.

Cuándo no usar Docker

También hay momentos en los que Docker no es la mejor solución. Estos son algunos ejemplos:

  1. Tu aplicación es complicada y no eres/no tienes un administrador de sistemas. Para aplicaciones grandes o complicadas, usar un Dockerfile prefabricado o extraer una imagen existente no será suficiente. Crear, editar y administrar la comunicación entre múltiples contenedores en múltiples servidores es una tarea que requiere mucho tiempo.

  2. El rendimiento es fundamental para su aplicación. Docker brilla en comparación con las máquinas virtuales cuando se trata de rendimiento porque los contenedores comparten el kernel del host y no emulan un sistema operativo completo. Sin embargo, Docker impone costos de rendimiento. Los procesos que se ejecutan dentro de un contenedor no serán tan rápidos como los que se ejecutan en el sistema operativo nativo. Si necesita obtener el mejor rendimiento posible de su servidor, es posible que desee evitar Docker.

  3. No quiere problemas de actualización. Docker es una nueva tecnología que aún está en desarrollo. Para obtener nuevas funciones, es probable que deba actualizar las versiones con frecuencia y no se garantiza la compatibilidad con versiones anteriores.

  4. La seguridad es fundamental para su aplicación. Como se mencionó anteriormente, mantener los diferentes componentes de una aplicación en contenedores separados brinda algunos beneficios de seguridad, ya que un compromiso en un contenedor no puede afectar fácilmente al resto de su sistema. Sin embargo, el enfoque de contenedorización de Docker plantea sus propios desafíos de seguridad, especialmente para aplicaciones más complicadas. Estos problemas tienen solución, pero requieren la atención de un ingeniero de seguridad experimentado. (Consulte la sección Más información para obtener enlaces a debates sobre estos temas).

  5. Múltiples sistemas operativos. Dado que los contenedores de Docker comparten el sistema operativo de la computadora host, si desea ejecutar o probar la misma aplicación en diferentes sistemas operativos, deberá usar máquinas virtuales en lugar de Docker.

  6. Clústeres. Los contenedores de Docker en servidores independientes se pueden combinar para formar un clúster con Docker Swarm. Sin embargo, Docker no reemplaza las herramientas de aprovisionamiento o automatización como Ansible, SaltStack y Chef. Además, Docker ha anunciado recientemente la compatibilidad con Kubernetes, lo que sugiere que Docker Swarm puede no ser suficiente como administrador de clústeres independiente.

¿Debería usar Docker Containers?

Docker se ha convertido en una forma extremadamente popular de configurar, guardar y compartir entornos de servidor mediante contenedores. Debido a esto, instalar una aplicación o incluso una gran pila puede ser tan simple como ejecutar docker pull o docker run . La separación de las funciones de la aplicación en diferentes contenedores también ofrece ventajas en la gestión de dependencias y seguridad.

Sin embargo, Docker no sustituye a la ingeniería de sistemas ni a la gestión de la configuración, y su enfoque tiene inconvenientes. Los desarrolladores deben resistir la tentación de contener todas las aplicaciones que crean, simplemente porque Docker es una solución popular y fácil de usar. Al igual que con cualquier herramienta, los requisitos de cualquier proyecto deben investigarse cuidadosamente antes de decidir si usar Docker.

Más información

Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.

  • Docker
  • Centro acoplable
  • Cuándo no usar Docker
  • 5 problemas de seguridad al usar Docker
  • Ocho reglas de seguridad de Docker para vivir
  • Su software es más seguro en contenedores Docker

Docker
  1. Cómo instalar y usar Docker en Ubuntu 20.04

  2. Linux:¿por qué usamos Su y no solo Su?

  3. Cómo instalar y usar Docker Compose en CentOS

  4. ¿Por qué Deis y qué es?

  5. ¿Por qué usamos su - y no solo su?

Cómo instalar y usar Docker Compose en Ubuntu 20.04

Cómo instalar y usar Docker Compose en Ubuntu 22.04

Cómo instalar y usar Docker en Ubuntu 22.04

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

Cómo instalar y usar Docker en Ubuntu 20.04

Cómo instalar y usar Docker en AlmaLinux 8