Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo y DevOps Última actualización: 24 de septiembre de 2023
Compartir en:
Freshdesk - El software de atención al cliente fácil de usar que le ayuda a ofrecer experiencias de cliente encantadoras.

Hablemos de algunas de las mejores prácticas que debe seguir al utilizar contenedores

La contenedorización se está utilizando ampliamente en varias organizaciones para desplegar aplicaciones dentro de un contenedor. Estos contenedores son populares porque son muy ligeros. Para aprovechar al máximo los contenedores, debe seguir algunas de las mejores prácticas mientras trabaja con ellos

Utilice una imagen base estable

Gracias a Docker, crear imágenes de contenedores nunca ha sido tan sencillo

Especifique su imagen base, añada sus cambios y construya su contenedor. Aunque esto es estupendo para empezar, utilizar las imágenes base predeterminadas puede dar lugar a grandes imágenes llenas de vulnerabilidades de seguridad. Además, evite utilizar la imagen Docker con la etiqueta “Latest”, ya que existe una enorme probabilidad de que contenga algún error

La mayoría de las imágenes Docker utilizan Debian o Ubuntu como imagen base. Son muy útiles en términos de compatibilidad y facilidad de incorporación, pero estas imágenes base pueden añadir cientos de megabytes de sobrecarga adicional a su contenedor

Por ejemplo, las aplicaciones simples de Node.js y Go, “hola mundo”, rondan los 700 megabytes. Su aplicación es probablemente sólo unos pocos megabytes de tamaño. Por lo tanto, toda esta sobrecarga adicional es espacio desperdiciado y un gran escondite para vulnerabilidades de seguridad y bugs

Si su lenguaje de programación o pila no tiene una opción para una imagen base pequeña, puede construir su contenedor utilizando Alpine Linux en bruto como punto de partida. Esto también le da un control completo sobre lo que va dentro de sus contenedores

Mantenga las imágenes de contenedor más pequeñas

Utilizar imágenes base más pequeñas es probablemente la forma más fácil de reducir el tamaño de su contenedor

Lo más probable es que el lenguaje o pila que esté utilizando proporcione una imagen oficial mucho más pequeña que la imagen por defecto. Por ejemplo, echemos un vistazo al contenedor Node.js. Pasar de la imagen por defecto node:latest a node:14-alpine reduce el tamaño de nuestra imagen base en casi diez veces

nodejs latest tag - geekflare

vs….

nodejs alpine tag - geekflare

En el nuevo archivo Docker, el contenedor se inicia con la imagen node:alpine, crea un directorio para el código, instala las dependencias con NPM y, por último, inicia el servidor Node.js. Con esta actualización, el contenedor resultante es casi diez veces más pequeño

Puede crear el contenedor aún más ligero utilizando el patrón constructor. Con los lenguajes interpretativos, el código fuente se envía a un intérprete, y luego se ejecuta directamente. Pero con un lenguaje compilado, el código fuente se convierte previamente en código compilado

Ahora bien, con los lenguajes compilados, el paso de compilación suele requerir herramientas que no son necesarias para ejecutar el código. Esto significa que puede eliminar completamente estas herramientas del contenedor final. Para ello, puede utilizar el patrón constructor. El primer contenedor construye el código y, a continuación, el código compilado se empaqueta en el contenedor final sin todos los compiladores y herramientas necesarios para realizar el código compilado

El uso de pequeñas imágenes base y el patrón constructor son excelentes formas de crear contenedores mucho más pequeños sin mucho trabajo

Etiquete sus imágenes contenedoras

El etiquetado Docker es una herramienta excepcionalmente poderosa para nosotros cuando se trata de gestionar nuestras imágenes. Ayuda en la gestión de diferentes versiones de una imagen Docker. A continuación se muestra un ejemplo de la construcción de una imagen docker con nombre de etiqueta v1.0.1

docker build -t geekflare/ubuntu:v1.0.1

Ahora bien, se utilizan dos tipos de etiquetas: Etiquetas estables Etiquetas únicas

Utilice etiquetas estables para mantener la imagen base del contenedor. Evite utilizar estas etiquetas para contenedores de despliegue porque estas etiquetas recibirán actualizaciones con frecuencia, y puede dar lugar a inconsistencias en el entorno de producción

Utilice etiquetas únicas para los despliegues. Utilizando etiquetas únicas, puede escalar su clúster de producción a muchos nodos con facilidad. Evita incoherencias, y los hosts no tirarán de ninguna otra versión de imagen Docker

Además, como buena práctica, debe bloquear las etiquetas de imagen desplegadas estableciendo write-enable en false. Esto ayuda a no eliminar la imagen desplegada del registro por error

Seguridad del contenedor

A continuación se indican los puntos fundamentales para asegurarse de que el contenedor es seguro

  • Verifique la autenticidad de cualquier software que instale en su contenedor
  • Utilice imágenes Docker firmadas o con una suma de comprobación válida.
  • Asegúrese de que la URL utiliza HTTPS si utiliza un repositorio de terceros.
  • Incluya las claves GPG correctas antes de utilizar su gestor de paquetes para actualizar los paquetes
  • Nunca ejecute sus aplicaciones como root. Siempre debe utilizar la directiva user dentro del dockerfile para asegurarse de que baja los privilegios de su usuario.
  • No ejecute SSH dentro de su contenedor.
  • Haga que el sistema de archivos sea de sólo lectura.
  • Utilice Namespaces para dividir su cluster.

Docker benchmark ha sido proporcionado por el Centro para la Seguridad en Internet (CIS) para evaluar la seguridad de un contenedor Docker. Han proporcionado un script de código abierto llamado Docker Bench for Security, que puede ejecutar para comprobar cómo de seguro es un contenedor Docker

Una aplicación por contenedor

Las máquinas virtuales son bastante buenas para ejecutar varias cosas en paralelo, pero cuando se trata de contenedores, debe ejecutar una sola aplicación dentro de un contenedor. Por ejemplo, si está ejecutando una aplicación MEAN en un entorno de contenedores, entonces debería tener un contenedor para MongoDB, un contenedor para Express.js, un contenedor para Angular y un contenedor para Node.js

Incluso los contenedores pueden ejecutar múltiples aplicaciones en paralelo en él, pero entonces usted puede tomar ventaja del modelo de contenedor. A continuación se muestra una representación correcta e incorrecta de la ejecución de aplicaciones en un contenedor

single app one container - geekflare

Los contenedores están diseñados para tener un ciclo de vida similar al de la aplicación que ejecuta. Cuando se inicia el contenedor, se inicia la aplicación. Cuando un contenedor se detiene, la aplicación también se detiene

Ejecutar contenedores sin estado

Los contenedores están diseñados fundamentalmente para no tener estado. En este caso, los datos persistentes que contienen información sobre el estado del contenedor se almacenan fuera del contenedor. Los archivos se pueden almacenar en un almacén de objetos como el almacenamiento en la nube, para almacenar la información de la sesión de usuario se puede utilizar una base de datos de baja latencia como Redis y también se puede adjuntar un disco externo para el almacenamiento a nivel de bloque

Al mantener el almacenamiento fuera del contenedor, puede apagar o destruir fácilmente un contenedor sin temor a perder ningún dato

Si utiliza contenedores sin estado, es muy fácil migrar o escalar según las necesidades de la empresa

Conclusión

Las anteriores son algunas de las prácticas más importantes que uno debe seguir mientras se trabaja con contenedores si usted está construyendo un entorno de producción Docker a continuación, echa un vistazo a cómo asegurarlo.

  • Avi
    Autor
    Avi es un entusiasta de la tecnología con experiencia en tecnologías de tendencia como DevOps, Cloud Computing, Big Data y muchas más. Le apasiona aprender tecnologías de vanguardia y compartir sus conocimientos con los demás a través de... Seguir leyendo
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • La herramienta de texto a voz que utiliza la IA para generar voces realistas similares a las humanas.
    Pruebe Murf AI
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder