Afinal, o que é um container?

Se você já ouviu falar sobre DevOps, deve ter ouvido falar também sobre o Docker. Docker é uma empresa especializada no provisionamento de um conjunto de tecnologias e ferramentas para a criação e gestão de containers. O trabalho da Docker foi tão bem sucedido que a tecnologia criada por ela acabou se tornando o mecanismo padrão no mercado para containers. Mas, o que vem a ser um container?

Docker - Fundamentos
Curso de Docker - Fundamentos
CONHEÇA O CURSO

Entendendo o conceito de container

Um container é um ambiente isolado utilizado para empacotar aplicações. Containers têm o objetivo de segregar e facilitar a portabilidade de aplicações em diferentes ambientes.

Um container contém um conjunto de processos que são executados a partir de uma imagem, imagem esta que fornece todos os arquivos necessários. Os containers compartilham o mesmo kernel e isolam os processos da aplicação do restante do sistema operacional.

A ideia é que cada container assuma apenas uma responsabilidade. Nos containers, você divide a responsabilidade isolando os processos de cada aplicação, garantindo assim que nenhum processo possa influenciar no funcionamento dos demais processos.

Um agrupamento de containers também é conhecido como cluster. Um cluster consegue compartilhar recursos como armazenamento, tornando possível a execução de dezenas e até centenas de containers de maneira simultânea a partir do mesmo ambiente.

Os containers são muito práticos em ambiente de desenvolvimento. Sua aplicabilidade serve como base para o modelo DevOps e auxilia as áreas de Operações e Desenvolvimento. Na área de desenvolvimento, os containers empacotam aplicações com todas as suas dependências, a fim de serem acessíveis e compartilhadas, ao mesmo tempo em que ficam agnósticas a características do ambiente, como sistema operacional. Já em operações, são processos de aplicações rodando em um kernel compartilhado, mais simples que máquinas virtuais.

Embora seja algo parecido, um container não é uma máquina virtual. A diferença entre um container e uma máquina virtual é que os containers conseguem compartilhar o mesmo kernel do sistema operacional.

Um exemplo prático

Quando uma aplicação é desenvolvida, é comum que a mesma precise ser apresentada em diferentes ambientes: geralmente, um ambiente mais voltado ao processo de desenvolvimento, um outro ambiente voltado para teste de validação e um ambiente de produção. Dependendo das características da aplicação, criar estes ambientes de maneira simples, confiável e facilitada pode vir a se tornar uma missão verdadeiramente complicada.

Com a utilização do Docker, por exemplo, você poderá implantar diferentes versões da sua aplicação para cada um dos ambientes, já que cada container corresponde à um ambiente isolado. A facilidade para replicação de containers acaba também tornando bem simples a tarefa de criação de ambientes padronizados, já que as aplicações acabam rodando em cima dos containers, os quais são completamente desacoplados de aspectos de ambiente como o sistema operacional.

Os containers são gerados a partir de uma imagem que contém todas as dependências necessárias para a aplicação ser executada. Por isso, você acaba tendo uma aplicação portátil e consistente em todas as etapas de desenvolvimento, pois todos os mecanismos e dependências necessárias para a execução da aplicação estão contidas na imagem, imagem esta que pode dar origem a vários containers, containers estes que podem ser executados de maneira uniforme em qualquer ambiente que suporta a execução de containers.

Vale lembrar que, apesar do Docker ter sido desenvolvido inicialmente com base na tecnologia LXC (Linux Containers – sendo, portanto, mais associado aos containers Linux), hoje essa tecnologia tornou-se independente de sistema operacional: podemos utilizar o Docker em ambientes Linux, Windows e MacOS.

Gerenciamento de containers

Quando você faz a utilização de containers é preciso organizar, gerenciar e monitorar os containers em execução. Todo esse gerenciamento se chama orquestração. Existem ferramentas de orquestração que fazem o gerenciamento de múltiplos containers. Os mais conhecidos são o OpenShift e o Kubernetes. O Docker também tem um gerenciador próprio, chamado de Docker Swarm.

Com a orquestração de containers, você consegue automatizar e gerenciar diversas tarefas como o provisionamento e implantação, configuração, alocação de recursos, disponibilidade de containers, escalada, balanceamento, roteamento de tráfego e remoção de containers, de acordo com parâmetros como a demanda de requisições e o consumo de recursos, por exemplo.

O objetivo principal dos orquestradores é cuidar do ciclo de vida dos containers, distribuindo-os conforme as suas especificações ou de acordo com as demandas.

Deixe seu comentário

Responsável pelo sucesso do cliente na TreinaWeb. Graduada em Gestão de Tecnologia da Informação pela FATEC Guaratinguetá, além de estudante de UX/UI.

© 2004 - 2019 TreinaWeb Tecnologia LTDA - CNPJ: 06.156.637/0001-58 Av. Paulista, 1765, Conj 71 e 72 - Bela Vista - São Paulo - SP - 01311-200