Containers
Tags: containers, docker, guiadeinfra
Published: 2020-07-31 19:32:10

---
canonical_url: https://medium.com/sysadminas/containers-e4adf391de87
---

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](https://dev-to-uploads.s3.amazonaws.com/i/nqmpfq6z90vqpcji8e4s.png)
Referência da imagem [aqui](https://static.imasters.com.br/wp-content/uploads/2016/02/071711583166374.png). 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](https://docs.docker.com/get-started/swarm-deploy/);
2. [Kubernetes](https://kubernetes.io/);
3. [Openshift](https://www.redhat.com/pt-br/technologies/cloud-computing/openshift);
4. [Cattle (Rancher)](https://rancher.com).

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](https://vmwarelearningzone.vmware.com/oltpublish/site/program.do?dispatch=showCourseSession&id=884e19d5-dd8b-11e7-a6ac-0cc47a352510), em inglês, da VMware;
[Curso de introdução ao Kubernetes](https://training.linuxfoundation.org/training/introduction-to-kubernetes/), da Linux Foundation;
[Visão geral da implantação de aplicações em containers](https://www.redhat.com/pt-br/services/training/do080-deploying-containerized-applications-technical-overview?sc_cid=7013a000002gYMGAA2), em inglês, da Red Hat.

**Sugestões de livros**
[Primeiros Passos com Docker](https://novatec.com.br/livros/primeiros-passos-docker/), de Karl Matthias e Sean P. Kane, da Editora: O'reilly e Novatec no Brasil;
[Kubernetes Básico](https://novatec.com.br/livros/kubernetes-basico/), de Brendan Burns, Joe Beda e Kelsey Hightower, da Editora: O'reilly e Novatec no Brasil;
[Usando Docker](https://novatec.com.br/livros/usando-docker/), de Adrian Mouat, Editora: O'reilly e Novatec no Brasil;
[Docker para desenvolvedores](https://leanpub.com/dockerparadesenvolvedores), de Rafael Gomes.

**Sugestões de certificações**
[Certificação gratuita de Rancher](https://academy.rancher.com/courses/course-v1:RANCHER+K101+2019/about), em inglês, da Rancher Academy;
[Certified Kubernetes Administrator (CKA)](https://training.linuxfoundation.org/certification/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](https://medium.com/sysadminas/guia-de-infraestrutura-de-ti-30543bfe9922), no [dev.to](https://dev.to/sysadminas/guia-de-infraestrutura-de-ti-4m14), e na Open Library. Para checar todos os capítulos, clique [aqui](https://dev.to/sysadminas/guia-de-infraestrutura-de-ti-4m14) e acesse a Introdução.*