Skip to content

Latest commit

 

History

History
256 lines (208 loc) · 9.41 KB

clo2pd1o4000508l1fc7s2a0i.md

File metadata and controls

256 lines (208 loc) · 9.41 KB
title datePublished cuid slug cover tags
Mastering DevOps: Unleashing the Power of Top 10 Containers
Mon Oct 23 2023 09:35:53 GMT+0000 (Coordinated Universal Time)
clo2pd1o4000508l1fc7s2a0i
mastering-devops-unleashing-the-power-of-top-10-containers
nginx, devops, gitlab, containers, jenkins

In the realm of DevOps, the adoption of containerized solutions has become instrumental in enhancing development workflows. These containers encapsulate applications and their dependencies, ensuring consistency across various environments. If you’re delving into the world of DevOps, understanding the top containers can significantly elevate your development and deployment processes. Let’s dive into the top 10 DevOps containers that are reshaping the landscape in 2023.

1. GitLab: Collaborative Development Hub

GitLab stands as a comprehensive platform for DevOps collaboration. Offering integrated CI/CD capabilities, it facilitates swift container deployment and seamless collaboration among teams.

![Gitlab continuous integration and continuous deployment](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/Gitlab-continuous-integration-and-continuous-deployment.png align="left")

yamlCopy codegitlab:
    image: gitlab/gitlab-ee:latest
    hostname: 'gitlab.mydomain.com'
    restart: always
    volumes:
      - '~/homelabservices/gitlab/data:/var/opt/gitlab'
      - '~/homelabservices/gitlab/config:/etc/gitlab'
      - '~/homelabservices/gitlab/logs:/var/log/gitlab'
    container_name: gitlab

2. Jenkins: Continuous Integration Powerhouse

Jenkins, a trusted CI/CD solution, specializes in automated builds and tests for containerized applications. Its extensive plugin ecosystem supports multiple containers and ensures continuous integration in container environments.

![Jenkins trusted cicd deployment management](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/Jenkins-trusted-CICD-deployment-management.png align="left")

yamlCopy codeversion: '3.8'
services:
    jenkins:
        image: jenkins/jenkins:lts
        privileged: true
        user: root
        ports:
            - 8080:8080
            - 50000:50000
        container_name: jenkins
        volumes:
            - /home/jenkins_compose/jenkins_configuration:/var/jenkins_home
            - /var/run/docker.sock:/var/run/docker.sock

3. Harbor: Secure Container Registry

Harbor provides a secure container registry crucial for managing and securing container images. With role-based access control and vulnerability scanning, it ensures the integrity of your containerized applications.

![Harbor registry](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/Harbor-registry.png align="left")

bashCopy codecurl -LO https://raw.githubusercontent.com/bitnami/containers/main/bitnami/harbor-portal/docker-compose.yml
curl -L https://github.com/bitnami/containers/archive/main.tar.gz | tar xz --strip=2 containers-main/bitnami/harbor-portal && cp -RL harbor-portal/config . && rm -rf harbor-portal
docker-compose up

4. Hashicorp Vault: Secrets Guardian

Hashicorp Vault is essential for secrets management within containers. It generates dynamic secrets, encrypts data in transit and at rest, and ensures sensitive information remains secure without hardcoding in pipelines or configuration files.

![Hashicorp vault secrets management](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/Hashicorp-vault-secrets-management.jpg align="left")

yamlCopy codeversion: '3.6'
services:
  vault:
    image: vault:latest
    container_name: vault
    restart: on-failure:10
    ports:
      - "8201:8201"
    environment:
      VAULT_ADDR: 'https://0.0.0.0:8201'
    cap_add:
      - IPC_LOCK
    volumes:
      - vault-volume:/data

5. ArgoCD: Kubernetes Deployment Maestro

ArgoCD is a deployment maestro for Kubernetes environments, ensuring consistent deployments across multiple platforms. Its declarative approach and visualization tools streamline the deployment process.

![Argocd consistent deployments](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/ArgoCD-consistent-deployments.png align="left")

yamlCopy codeversion: '2'
services:
  argo-cd:
    image: docker.io/bitnami/argo-cd:2

6. SonarQube: Code Quality Monitor

SonarQube guarantees high code quality within containers. Through continuous code quality checks and automated reviews, it aids in identifying and resolving bugs and vulnerabilities in containerized applications.

![Sonarqube high quality code](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/Sonarqube-high-quality-code.png align="left")

yamlCopy codeversion: "3"
services:
  sonarqube:
    image: sonarqube:community
    hostname: sonarqube
    container_name: sonarqube
    depends_on:
      - db
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    ports:
      - "9000:9000"
  db:
    image: postgres:13
    hostname: postgresql
    container_name: postgresql
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar

7. Prometheus: Containers’ Watchguard

Prometheus is a powerful monitoring tool for observing multiple containers. Its multi-dimensional data modeling and efficient alerting systems empower DevOps teams to maintain optimal container performance.

![Prometheus system monitoring tool](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/Prometheus-system-monitoring-tool.png align="left")

yamlCopy codeversion: '3.8'
volumes:
  prometheus_data: {}
services:
  prometheus:
    image: prom/prometheus
    restart: always
    volumes:
      - ./prometheus:/etc/prometheus/
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
    ports:
      - 9090:9090

8. Grafana: Data Visualization Expert

Grafana excels in visualizing and analyzing data within containers. With customizable dashboards and diverse panel plugins, it offers proactive issue identification and robust data visualization capabilities.

![Grafana visualization](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/Grafana-visualization.png align="left")

yamlCopy codeversion: "3.8"
services:
  grafana:
    image: grafana/grafana-enterprise
    container_name: grafana
    restart: unless-stopped
    ports:
     - '3000:3000'

9. Traefik: Traffic Router

Traefik efficiently balances load across containers, providing automatic service discovery and middleware support. Its intuitive dashboard simplifies monitoring, making it an invaluable tool for DevOps teams.

![Traefik router and load balancer](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/Traefik-Router-and-Load-Balancer.jpg align="left")

yamlCopy codeversion: '3.3'
services:
  traefik2:
    image: traefik:latest
    restart: always
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entryPoint.scheme=https"
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    container_name: traefik

10. Nginx Proxy Manager: Proxy Master

Nginx Proxy Manager simplifies proxy management within containers, supporting both HTTP and HTTPS protocols. With SSL support and easy management of Let’s Encrypt certificates, it ensures secure and streamlined proxy hosting.

![Nginx proxy manager](https://www.virtualizationhowto.com/wp-content/uploads/2023/10/Nginx-Proxy-Manager.png align="left")

yamlCopy codeversion: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    networks:
      - nginxproxy
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db
  db:
    image: 'jc21/mariadb-aria:latest'
    restart: always
    networks:
      - nginxproxy
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./mysql:/var/lib/mysql

Incorporating these containers into your DevOps stack can revolutionize your development process. By leveraging their capabilities, you empower your team to build, deploy, and manage containerized applications with efficiency and confidence.


I hope this will help you to revolutionize your development process and we'll be coming up with similar content in our upcoming blogs. So, be in touch with us by following us on the socials.

See ya 👋

Join our community on Discord - DevsInTech 🚀

Follow us on Twitter - DevsInTech!!!