10 herramientas que complementan a Docker

Docker es la plataforma de contenedorización más conocida, pero no existe de forma aislada. En torno a la transición a los contenedores nació todo un ecosistema de herramientas complementarias y proyectos derivados.

Aquí hay un resumen de 10 analizadores, indexadores y orquestadores de código abierto que hacen que Docker sea aún más conveniente y útil. Ya sea que se encuentre todavía al comienzo de su viaje con Docker o sea un profesional experimentado que utiliza tecnología en la producción, es posible que encuentre algo que valga la pena incluir en su próximo proyecto.

Índice de contenidos
  1. Dial de Docker
  2. Portainer
  3. gobernadores
  4. Tráfico
  5. curiosidad
  6. Syft
  7. Aderezo
  8. acuden
  9. Dokku
  10. Hadolint
  11. Resumen

Dial de Docker

Docker Compose es la única herramienta de esta lista que en realidad forma parte de Docker. Compose es una forma asequible de crear "pilas" de contenedores de Docker que puede administrar al unísono.

La CLI estándar de Docker le permite interactuar con contenedores individuales. Compose proporciona una interfaz similar para trabajar con contenedores en forma agregada. Esto le permite controlar fácilmente los sistemas que requieren varios contenedores, como un servidor de aplicaciones, una base de datos y una capa de almacenamiento en caché. Defina estos componentes como servicios en un docker-compose.yml archivo, luego use el docker-compose binario para iniciarlos todos juntos:

version: 3
services:
  app:
    image: example.com/example-app:latest
    ports:
      - 80:80
  database:
    image: mysql:latest
    expose:
      - 3306
  cache:
    image: redis:latest
    expose:
      - 6379

Corriendo docker-compose up -d crearía tres contenedores, uno para la aplicación, la base de datos y los servicios de caché. Se vincularán automáticamente entre sí. Esto es mucho más manejable que repetir el docker run comando varias veces.

Portainer

Portainer es una GUI para instalar Docker. Es una herramienta basada en navegador que ofrece una interfaz completa para ver, crear y configurar contenedores. También puede interactuar con otros tipos de objetos Docker, como imágenes, redes y volúmenes.

El tablero de Portainer

Portainer se implementa como su propia imagen de Docker:

docker run -d -p 9000:9000 --name=portainer 
    -v /var/run/docker.sock:/var/run/docker.sock 
    -v portainer_data:/data 
    portainer/portainer-ce

Esto configura una instancia de Portainer a la que puede acceder localhost:9000. Funciona montando el conector Docker de su host en el contenedor Portainer. Portainer puede usar el socket para administrar los contenedores que se ejecutan en su host.

gobernadores

Kubernetes es una plataforma de orquestación de contenedores distribuida. Es una forma común de mover cargas de trabajo Dockerized a entornos de producción. Un clúster de Kubernetes consta de varios nodos (máquinas físicas), cada uno de los cuales es adecuado para alojar instancias de contenedor.

Kubernetes le ofrece una fácil escalabilidad e implementación. Mientras que Simple Docker expone contenedores individuales en una sola máquina, Kubernetes administra varios contenedores que se ejecutan sin problemas en varios nodos.

Dado que Kubernetes es compatible con OCI, puede implementar sus imágenes de Docker existentes en su clúster:

apiVersion: apps/v1
kind: Deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
        - name: example
          image: example.com/example-image:latest
          ports:
            - containerPort: 80
kubectl apply -f deployment.yml

Este ejemplo crea una distribución de Kubernetes del example.com/example-image:latest Imagen. El replicas: 3 significa que terminará con tres instancias de contenedor, lo que proporcionará redundancia para su sistema. La distribución es similar a la ejecución docker run -d -p 80:80 example.com/example-image:latest, aunque esto solo inicia un solo contenedor.

Tráfico

Traefik es un proxy inverso HTTP que es fácil de integrar con cargas de trabajo de contenedores. Se reconfigura automáticamente con nuevas rutas al crear y eliminar contenedores.

Traefik le permite adjuntar etiquetas a sus contenedores para definir nombres de dominio y comportamiento de reenvío. El software creará rutas de proxy apropiadas cada vez que un contenedor con etiquetas coincidentes se una a la red Traefik.

Interfaz de usuario web de Traefik
Tráfico

Traefik también ofrece funciones de equilibrio de carga, compatibilidad con WebSocket, una API REST, métricas integradas y un panel de control basado en la web para que pueda monitorear el tráfico en tiempo real. Es una buena forma de exponer varios contenedores públicos a través de nombres de dominio utilizando una única instalación de Docker.

curiosidad

Trivy es un escáner de imágenes de contenedores que detecta vulnerabilidades conocidas. Escanear sus imágenes antes de implementarlas en producción le brinda la confianza de que sus cargas de trabajo están seguras y protegidas.

Trivy está disponible como su propia imagen de Docker. Puede iniciar un escaneo simple del example-image:latest imagen usando el siguiente comando:

docker run --rm 
    -v trivy-cache:/root/.cache/ 
    -v /var/run/docker.sock:/var/run/docker.sock 
    aquasec/trivy:latest image example-image:latest

Captura de pantalla de un informe de Trivy

Trivy identifica los paquetes de software en su imagen, busca vulnerabilidades y genera un informe que contiene el ID de CVE, la gravedad y el rango de versiones afectadas de cada problema. Debe actualizar cada paquete al FIXED VERSION indicado por Trivy. Por lo tanto, ejecutar la herramienta después de crear una imagen es una manera fácil de aumentar la seguridad de sus implementaciones.

Syft

Syft genera SBOM (lista de materiales del software) a partir de imágenes de Docker. Estas son listas de todos los paquetes del sistema operativo y las dependencias del lenguaje de programación incluidos en la imagen.

Syft le ayuda a controlar su cadena de suministro de software. Docker facilita la referencia a contenido remoto y la superposición de sistemas de archivos complejos sin necesariamente darse cuenta. Es aún más difícil para los usuarios de su imagen comprender lo que hay dentro.

Los recientes ataques de alto perfil han demostrado que las largas cadenas de suministro de software representan una seria amenaza. Ejecutar Syft en sus imágenes lo mantiene informado de su composición, lo que le permite evaluar si puede eliminar algunos paquetes o cambiar a una imagen base más mínima.

Aderezo

En un tema relacionado, Dive facilita la inspección del sistema de archivos de imágenes de Docker. Las imágenes son bastante opacas de forma predeterminada, por lo que es común lanzar un contenedor para averiguar qué hay dentro. Esto podría ponerlo en riesgo si la imagen contiene un proceso malicioso.

Dive le permite navegar por el sistema de archivos de una imagen utilizando una vista de árbol interactiva en su terminal. También puede explorar las capas individuales para ver cómo se construyó la imagen. Ver solo los cambios en una sola capa lo ayuda a ver los cambios aplicados por cada etapa de compilación, incluso si no tiene acceso al Dockerfile original.

acuden

Flocker es un administrador de volumen que combina la gestión de contenedores y sus datos persistentes. Admite entornos de múltiples hosts, lo que facilita la migración de volúmenes entre hosts a medida que se reprograman los contenedores.

Esta portabilidad asegura que los volúmenes estén disponibles dondequiera que estén los contenedores. Los volúmenes de Docker tradicionales no pueden abandonar el host en el que se crearon, lo que obliga a los contenedores a permanecer en estasis también.

La compatibilidad con el almacenamiento distribuido facilita la transición de contenedores a producción. Flocker es ideal para contenedores con estado que necesitan escalarse en entornos distribuidos mientras se mantiene la compatibilidad con varios motores de almacenamiento. Es compatible con backends, incluidos Amazon EBS, Google GCE y OpenStack Block Storage.

Dokku

Dokku usa Docker para permitirle autohospedar su Plataforma como servicio (PaaS). Inicie automáticamente contenedores de Docker cuando envíe código mediante Git.

Como plataforma de aplicación completa, Dokku le permite mapear dominios, agregar SSL, implementar múltiples entornos a través de sucursales de Git y configurar servicios auxiliares como bases de datos. Es una gran alternativa a las plataformas comerciales como Heroku y Firebase que le permite mantener las implementaciones de producción en su hardware.

La configuración de un servidor Dokku le permite iniciar aplicaciones en contenedores aislados sin aprender todas las complejidades de la gestión manual de contenedores. Puede concentrarse en escribir y confirmar código utilizando flujos de trabajo establecidos basados ​​en Git. Agregar su servidor Dokku como un control remoto de Git significa que puede git push para implementar cambios, localmente en la terminal o como parte de una canalización de CI.

Hadolint

Hadolint es un linter de Dockerfile que verifica que los pasos de compilación se adhieran a las mejores prácticas. La ejecución de Hadolint puede descubrir problemas de configuración comunes que hacen que sus compilaciones sean más lentas y menos seguras. Hadolint usa ShellCheck internamente para lint también scripts de shell en su Dockerfile RUN Instrucciones.

Puede descargar Hadolint como un binario precompilado, probarlo en la web o usar su propia imagen de Docker. hadolint/hadolint. Inicie un escaneo proporcionando una ruta de Dockerfile al binario Hadolint:

hadolint Dockerfile

Hadolint escaneará su Dockerfile en busca de problemas y presentará los resultados en su terminal. Algunas de las reglas incluidas incluyen control absoluto WORKDIR rutas, enviando unico COPY --from alias y no cambie a un usuario que no sea root antes del final del Dockerfile. La ejecución regular de Hadolint resultará en construcciones de imágenes más seguras y de mejor rendimiento que cumplan con los estándares de la comunidad.

Resumen

Docker es una gran herramienta de desarrollo, pero mejora aún más cuando se combina con otros proyectos populares. Las iniciativas de la comunidad pueden aumentar la seguridad de sus imágenes, ayudarlo a identificar problemas en sus Dockerfiles y proporcionar GUI versátiles para administrar sus contenedores.

Constantemente surgen nuevas herramientas, por lo que vale la pena explorar sitios de intercambio de código como GitHub para conocer los próximos proyectos. El tema de Docker es un buen punto de partida para su exploración.

Descubre más contenido

Subir Change privacy settings