DEV Community 👩‍💻👨‍💻

Cover image for Containers
Beatriz Oliveira for Sysadminas

Posted on • Updated on • Originally published at Medium

Containers

A “containerização” é um método usado no processo de implantação de aplicações altamente distribuídas. Nesse modelo, várias soluções isoladas são executadas em um host, compartilhando o mesmo kernel do sistema operacional, diferente das VMs, as quais executam um SO completo.

Containers e máquinas virtuais têm benefícios semelhantes de isolamento e alocação de recursos, porém funcionam de maneira diferente porque os containers virtualizam o sistema operacional ao invés do hardware. Vários containers podem ser executados em VMs e podem compartilhar o kernel do SO com outros containers, cada um executando como processos isolados. Os containers ocupam menos espaço que as VMs, conseguem lidar com mais aplicativos e requerem menos VMs e sistemas operacionais. Veja as diferenças entre as duas arquiteturas na imagem a seguir:

Alt Text
Referência da imagem aqui. Adaptação: Beatriz Oliveira

Docker

O docker é uma ferramenta open source, que serve para fazer a criação de containers. No docker, a virtualização funciona diferente da virtualização tradicional, pois, nele, os recursos funcionam isoladamente. Isso acontece porque os containers não têm visão do servidor completo, garantindo maior facilidade na hora de criar e manter ambientes, além de tornar o processo de disponibilização de aplicações menos oneroso.

No docker, é possível criar imagens a partir de um dockerfile. O dockerfile é um arquivo de texto que contém todos os comandos e passos para montar uma imagem. As imagens nada mais são que pacotes executáveis com todos os artefatos necessários para executar uma aplicação ou parte dela, o que inclui bibliotecas, códigos, arquivos de configuração e variáveis de ambiente, por exemplo.

Ferramentas de orquestração de containers

As ferramentas de orquestração são aplicações que servem para facilitar o gerenciamento de vários containers. Por meio delas, você consegue dizer quantas réplicas precisa utilizar, e também é possível gerenciar os recursos,que você precisa alocar para que sua aplicação funcione bem. Além disso, é no orquestrador que você também aponta a imagem da aplicação que deseja subir. Depois disso, o orquestrador executa a sua aplicação e, caso alguns dos nodes do seu cluster venham a falhar, ele mesmo faz o autogerenciamento de recuperação e relocação dos pods entre os nodes disponíveis, fazendo com que você tenha menos degradações ou até mesmo indisponibilidades na sua aplicação.

Atualmente, existem várias ferramentas de orquestração e gerenciamento de containers. As mais conhecidas e utilizadas no mercado são:

  1. Docker Swarm;
  2. Kubernetes;
  3. Openshift;
  4. Cattle (Rancher).

Se você deseja conhecer mais sobre docker, containers e alguns orquestradores através de livros e cursos, acompanhe a lista abaixo:

Sugestões de cursos
Curso sobre os benefícios dos containers gratuitos, em inglês, da VMware;
Curso de introdução ao Kubernetes, da Linux Foundation;
Visão geral da implantação de aplicações em containers, em inglês, da Red Hat.

Sugestões de livros
Primeiros Passos com Docker, de Karl Matthias e Sean P. Kane, da Editora: O'reilly e Novatec no Brasil;
Kubernetes Básico, de Brendan Burns, Joe Beda e Kelsey Hightower, da Editora: O'reilly e Novatec no Brasil;
Usando Docker, de Adrian Mouat, Editora: O'reilly e Novatec no Brasil;
Docker para desenvolvedores, de Rafael Gomes.

Sugestões de certificações
Certificação gratuita de Rancher, em inglês, da Rancher Academy;
Certified Kubernetes Administrator (CKA), em inglês, da Linux Foundation.

Caso conheça outras indicações de livros, certificações ou cursos, fique à vontade para deixar nos comentários. Ficarei feliz em adicionar a esse post!

Esse texto faz parte do Guia de Infraestrutura de Tecnologia da Informação publicado no Medium, no dev.to, e na Open Library. Para checar todos os capítulos, clique aqui e acesse a Introdução.

Top comments (0)

We are hiring! Do you want to be our Senior Platform Engineer? Are you capable of chipping in across sysadmin, ops, and site reliability work, while supporting the open source stack that runs DEV and other communities?

This role might just be for you!

Apply now