10 ferramentas que complementam a Docker


0

Docker é a plataforma de contentorização mais conhecida, mas não existe isoladamente. Todo um ecossistema de ferramentas complementares e projetos derivados surgiu em torno da mudança para contêineres.

Aqui está um resumo de 10 analisadores, indexadores e orquestradores de código aberto que tornam o Docker ainda mais conveniente e útil. Quer você ainda esteja no início de sua jornada no Docker, ou seja um profissional experiente usando a tecnologia na produção, você pode encontrar algo aqui que vale a pena incluir em seu próximo projeto.

Docker Compose

O Docker Compose é a única ferramenta nesta lista que realmente faz parte do Docker. Compose é uma maneira acessível de construir “pilhas” de contêineres Docker que você pode gerenciar em uníssono.

O Docker CLI padrão permite que você interaja com contêineres individuais. O Compose fornece uma interface semelhante para trabalhar com contêineres agregados. Isso torna possível controlar facilmente os sistemas que requerem vários contêineres, como um servidor de aplicativo, banco de dados e camada de cache. Você define esses componentes como serviços em um docker-compose.yml arquivo, em seguida, use o docker-compose binário para iniciá-los 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

Corrida docker-compose up -d criaria três contêineres, um para cada serviço de aplicativo, banco de dados e cache. Eles serão vinculados automaticamente. Isso é muito mais gerenciável do que repetir o docker run comando várias vezes.

Portainer

Portainer é uma GUI para a instalação do Docker. É uma ferramenta baseada em navegador que oferece uma interface completa para visualizar, criar e configurar seus contêineres. Você também pode interagir com outros tipos de objetos do Docker, como imagens, redes e volumes.

Painel do portainer

O Portainer é implantado como sua própria imagem 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
Propaganda

Isso configura uma instância do Portainer que você pode acessar em localhost:9000. Ele funciona montando o soquete Docker do seu host no contêiner Portainer. Portainer pode, portanto, usar o soquete para gerenciar os contêineres em execução em seu host.

Kubernetes

Kubernetes é uma plataforma de orquestração de contêineres distribuída. É uma maneira comum de mover cargas de trabalho Dockerized para ambientes de produção. Um cluster Kubernetes consiste em vários nós (máquinas físicas), cada um qualificado para hospedar instâncias de contêiner.

O Kubernetes oferece escalonamento e distribuição simples. Enquanto o Docker simples expõe contêineres individuais em uma única máquina, o Kubernetes gerencia vários contêineres que são executados perfeitamente em vários nós.

Como o Kubernetes é compatível com OCI, você pode implantar suas imagens Docker existentes em seu cluster:

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 exemplo cria uma implantação do Kubernetes do example.com/example-image:latest imagem. O replicas: 3 campo significa que você terminará com três instâncias de contêiner, fornecendo redundância para seu sistema. A implantação é semelhante à execução docker run -d -p 80:80 example.com/example-image:latest, embora isso só inicie um único contêiner.

Traefik

Traefik é um proxy reverso HTTP fácil de integrar com cargas de trabalho de contêiner. Ele se reconfigura automaticamente com novas rotas conforme você cria e remove contêineres.

Propaganda

O Traefik permite anexar rótulos aos seus contêineres para definir nomes de domínio e comportamento de encaminhamento. O software criará rotas proxy apropriadas cada vez que um contêiner com rótulos correspondentes se conectar à rede Traefik.

A interface do usuário da web do Traefik
Traefik

Traefik também oferece recursos de balanceamento de carga, suporte para WebSockets, uma API REST, métricas integradas e um painel baseado na web para que você possa monitorar seu tráfego em tempo real. É uma boa maneira de expor vários contêineres voltados ao público por meio de nomes de domínio usando uma única instalação do Docker.

Trivial

Trivy é um scanner de imagem de contêiner que descobre vulnerabilidades conhecidas. Digitalizar suas imagens antes de implantá-las na produção dá a você a confiança de que suas cargas de trabalho estão protegidas e protegidas.

O Trivy está disponível como sua própria imagem Docker. Você pode iniciar uma varredura simples do example-image:latest imagem usando o seguinte 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

Screnshot de um relatório Trivy

Trivy identifica os pacotes de software em sua imagem, procura vulnerabilidades e produz um relatório contendo o ID CVE de cada problema, gravidade e intervalo de versão afetada. Você deve atualizar cada pacote para o FIXED VERSION indicado por Trivy. Executar a ferramenta depois de criar uma imagem é, portanto, uma maneira fácil de aumentar a segurança de suas implantações.

Syft

Syft gera SBOMs (lista de materiais de software) a partir de imagens Docker. Estas são listas de todos os pacotes de sistema operacional e dependências de linguagem de programação incluídas na imagem.

Propaganda

Syft ajuda você a auditar sua cadeia de suprimentos de software. O Docker torna mais fácil fazer referência a conteúdo remoto e criar camadas de sistemas de arquivos complexos sem necessariamente perceber isso. É ainda mais difícil para os usuários de sua imagem descobrir o que está dentro.

Ataques recentes de alto perfil demonstraram que cadeias de suprimentos de software excessivamente longas são uma ameaça séria. Executar o Syft em suas imagens mantém você informado sobre sua composição, permitindo que você avalie se é possível remover alguns pacotes ou mudar para uma imagem de base mínima.

Mergulho

Em um tema relacionado, o Dive simplifica as inspeções do sistema de arquivos de imagem do Docker. As imagens são bastante opacas por padrão, então é comum iniciar um contêiner para descobrir o que está dentro. Isso pode colocá-lo em risco se a imagem contiver um processo malicioso.

O Dive permite que você navegue no sistema de arquivos de uma imagem usando uma visualização em árvore interativa em seu terminal. Você também pode navegar por camadas individuais para ver como a imagem foi construída. Visualizar apenas as mudanças em uma única camada ajuda a visualizar as mudanças aplicadas por cada estágio de construção, mesmo se você não tiver acesso ao Dockerfile original.

Flocker

Flocker é um gerenciador de volume que combina o gerenciamento de containers e seus dados persistentes. Ele oferece suporte a ambientes com vários hosts, simplificando a migração de volumes entre hosts conforme os contêineres são reprogramados.

Essa portabilidade garante que os volumes estejam disponíveis onde quer que os contêineres estejam. Os volumes Docker tradicionais não podem deixar o host em que foram criados, forçando seus contêineres a permanecerem em êxtase também.

Propaganda

O suporte de armazenamento distribuído facilita a transição de contêineres para a produção. Flocker é ideal para contêineres com estado que precisam ser dimensionados em ambientes distribuídos, mantendo a compatibilidade com diversos mecanismos de armazenamento. Ele oferece suporte a back-ends, incluindo Amazon EBS, Google GCE e OpenStack Block Storage.

Dokku

O Dokku usa o Docker para permitir que você hospede sua própria plataforma como serviço (PaaS). Ele acelera automaticamente os contêineres do Docker quando você envia o código usando Git.

Como uma plataforma de aplicativo completa, o Dokku permite mapear domínios, adicionar SSL, implantar vários ambientes por meio de ramificações Git e configurar serviços auxiliares, como bancos de dados. É uma ótima alternativa para plataformas comerciais como Heroku e Firebase que permite que você mantenha suas implantações de produção em seu próprio hardware.

Configurar um servidor Dokku permite iniciar aplicativos em contêineres isolados sem aprender todas as complexidades do gerenciamento manual de contêiner. Você pode se concentrar em escrever e comprometer código usando fluxos de trabalho baseados em Git estabelecidos. Adicionar seu servidor Dokku como um remoto Git significa que você pode git push para implantar suas mudanças, localmente em seu terminal ou como parte de um pipeline de CI.

Hadolint

Hadolint é um linter Dockerfile que verifica se os estágios de compilação estão de acordo com as práticas recomendadas. Executar o Hadolint pode descobrir problemas de configuração comuns que tornam suas compilações mais lentas e menos seguras. Hadolint usa ShellCheck internamente para também lint os scripts de shell em seu Dockerfile RUN instruções.

Você pode baixar Hadolint como um binário pré-compilado, testá-lo na web ou usar sua própria imagem Docker, hadolint/hadolint. Inicie uma verificação fornecendo o caminho para um Dockerfile para o binário Hadolint:

hadolint Dockerfile

Propaganda

O Hadolint fará a varredura em seu Dockerfile em busca de problemas e apresentará os resultados em seu terminal. Algumas das regras agrupadas incluem verificação de absoluto WORKDIR caminhos, exigindo único COPY --from aliases, e não alternar para um usuário não root antes do final do Dockerfile. Executar o Hadolint regularmente resultará em construções de imagens mais seguras e de melhor desempenho, em conformidade com os padrões da comunidade.

Resumo

O Docker é uma ótima ferramenta de desenvolvedor, mas fica ainda melhor quando emparelhado com outros projetos populares. As iniciativas da comunidade podem aumentar a segurança de suas imagens, ajudá-lo a identificar problemas em seus Dockerfiles e fornecer GUIs versáteis para gerenciar seus contêineres.

Novas ferramentas estão surgindo constantemente, então vale a pena navegar em sites de compartilhamento de código como o GitHub para descobrir os próximos projetos. O tópico Docker é um bom ponto de partida para sua exploração.


Like it? Share with your friends!

0

What's Your Reaction?

hate hate
0
hate
confused confused
0
confused
fail fail
0
fail
fun fun
0
fun
geeky geeky
0
geeky
love love
0
love
lol lol
0
lol
omg omg
0
omg
win win
0
win

0 Comments

Your email address will not be published. Required fields are marked *

Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Meme
Upload your own images to make custom memes
Video
Youtube, Vimeo or Vine Embeds
Audio
Soundcloud or Mixcloud Embeds
Image
Photo or GIF
Gif
GIF format