Pesquisar

Português

Português

Login

Login/Registre-se

Websites

Containers

O que é um container Linux?

Um container Linux® é um conjunto de um ou mais processos organizados isoladamente do sistema. Todos os arquivos necessários para executá-los são fornecidos por uma imagem distinta. Na prática, os containers Linux são portáteis e consistentes durante toda a migração entre os ambientes de desenvolvimento, teste e produção. Essas características os tornam uma opção muito mais rápida do que os pipelines de desenvolvimento, que dependem da replicação dos ambientes de teste tradicionais. Os containers também são uma parte importante da segurança da TI por conta da popularidade e da facilidade de uso deles.


Por que os containers são usados?

O que é um container

Imagine que você esteja desenvolvendo uma aplicação. Você trabalha em um laptop, e o seu ambiente tem uma configuração específica. Outros desenvolvedores podem ter configurações um pouco diferentes. A aplicação desenvolvida é baseada nessa configuração e depende de bibliotecas, dependências e arquivos específicos. Ao mesmo tempo, a empresa em que você trabalha tem ambientes de desenvolvimento e de produção padronizados com uma configuração própria e conjuntos de arquivos auxiliares. Você deseja emular esses ambientes localmente, sem a necessidade de recriar os ambientes do servidor. Então, como fazer a aplicação funcionar em ambientes diferentes, ser aprovada pela garantia de qualidade e implantá-la sem muito esforço, sem a necessidade de reescrever ou realizar reparos no código? A resposta é: containers.

O container que contém a aplicação tem as bibliotecas, dependências e arquivos necessários para migrá-la para a produção sem maiores problemas. Na verdade, você deve pensar no conteúdo de uma imagem de container como uma instalação de uma distribuição Linux, pois essa imagem é completa com pacotes RPM, arquivos de configuração e outros elementos. No entanto, é muito mais fácil lidar com uma distribuição de imagem de container do que instalar novas cópias de sistemas operacionais. Dessa forma, evita-se o conflito e todos ficam satisfeitos.

Esse foi um exemplo simples. No entanto, é possível usar os containers Linux em diversas situações problemáticas das mais variadas maneiras, sempre que for necessário obter o máximo de portabilidade, configurabilidade e isolamento. Com containers Linux, seu negócio desenvolve mais rapidamente e atende às necessidades empresariais conforme elas surgem. Em alguns casos, como a transmissão de dados em tempo real com o Apache Kafka, os containers são essenciais, pois são a única maneira de dar a escalabilidade que a aplicação precisa. Seja qual for o tipo de infraestrutura, on-premise, na nuvem ou híbrida, os containers atendem a qualquer demanda. E vale lembrar, escolher a plataforma de container ideal é tão importante quanto os próprios containers.


Mas isso não é o mesmo que virtualização?

Não exatamente. As duas tecnologias são complementares. Veja uma maneira fácil de distinguir ambas:

  • Com a virtualização, é possível executar sistemas operacionais (Windows ou Linux) simultaneamente em um único sistema de hardware.
  • Os containers compartilham o mesmo kernel do sistema operacional e isolam os processos da aplicação do restante do sistema. Por exemplo, os sistemas ARM Linux executam containers ARM Linux, os sistemas x86 Linux executam containers x86 Linux e os sistemas x86 Windows executam containers x86 Windows. Os containers Linux são extremamente portáteis, mas devem ser compatíveis com o sistema subjacente.

virtualização x containers

O que isso significa? Para começar, a virtualização usa um hipervisor para emular o hardware, o que permite executar vários sistemas operacionais simultaneamente. Essa não é uma solução tão leve quanto o uso de containers. Quando a capacidade e os recursos são limitados, é necessário usar aplicações leves que possam ser implantadas densamente. Os containers Linux são executados de maneira nativa no sistema operacional, compartilhando-o com todos os outros containers. Assim, as aplicações e os serviços permanecem leves e são executados em paralelo com agilidade.

Os containers Linux são mais um salto evolucionário no desenvolvimento, implantação e gerenciamento de aplicações. Com as imagens de containers Linux, é possível ter portabilidade e controle de versão. Isso ajuda a garantir que os trabalhos contidos no laptop do desenvolvedor sejam executados corretamente no ambiente de produção. Em comparação com as máquinas virtuais, executar containers Linux consome menos recursos, oferece uma interface padrão (início, interrupção, variáveis de ambiente etc.), mantém o isolamento da aplicação e facilita o gerenciamento dos processos, como parte de uma aplicação maior (vários containers). Além disso, é possível orquestrar as aplicações em vários containers em diversas nuvens.


O que é o LXC?

O projeto Linux Containers (LXC) é uma plataforma de container open source que fornece um conjunto de ferramentas, modelos, bibliotecas e associações de linguagem. O LXC conta com uma interface de linha de comando simples que melhora a experiência do usuário ao inicializar containers.

Além disso, ele oferece um ambiente de virtualização no nível do sistema operacional disponível para ser instalado em vários sistemas baseados no Linux. O LXC pode estar disponível na sua distribuição Linux por meio do repositório do pacote dela.


Breve história dos containers

Botão de download da Evolução dos containers

A ideia do que atualmente chamamos de tecnologia de containers surgiu em 2000 como jails do FreeBSD, uma tecnologia que permite particionar um sistema FreeBSD em vários subsistemas ou celas (por isso o nome "jails"). Os jails foram desenvolvidos como ambientes seguros que podiam ser compartilhados por um administrador de sistemas com vários usuários internos ou externos à empresa.

Em 2001, Jacques Gélinas deu o primeiro passo para a implementação de ambientes isolados em Linux por meio de seu projeto VServer. Após essa base ser estabelecida para vários espaços de usuário controlados em Linux, as peças começaram a se encaixar para formar o container Linux de hoje.

Em pouquíssimo tempo, mais tecnologias foram combinadas para tornar essa abordagem isolada uma realidade. Os grupos de controle (cgroups) são uma funcionalidade de kernel que controla e limita o uso de recursos por um processo ou grupo de processos. E o systemd, um sistema de inicialização que configura o espaço do usuário e gerencia processos, é usado por cgroups para dar mais controle sobre os processos isolados. Ambas as tecnologias, além de adicionarem um controle geral ao Linux, serviram como estrutura para a separação eficaz de ambientes.

O Docker entra em cena

Em 2008, o Docker entrou em cena (por meio do dotCloud) com sua tecnologia de container homônima. A tecnologia Docker adicionou muitos dos novos conceitos e ferramentas: uma interface de linha de comando simples para executar e criar novas imagens em camadas, um daemon de servidor, uma biblioteca de imagens de container pré-criadas e o conceito de servidor de registros. Combinadas, essas tecnologias possibilitaram aos usuários criar novos containers em camadas com rapidez e compartilhá-los facilmente com outras pessoas.

Há três padrões principais que garantem a interoperabilidade das tecnologias de container: as especificações Image, Distribution e Runtime da OCI. A combinação dessas especificações permite que projetos da comunidade, soluções corporativas e provedores de nuvem criem tecnologias de container interoperáveis. Por exemplo, pense em uma situação em que você precisa introduzir imagens personalizadas no servidor de registro do provedor de nuvem. Atualmente, a Red Hat e o Docker, além de muitas outras organizações, são membros da Open Container Initiative (OCI), cujo objetivo é padronizar as tecnologias de containers no setor open source.


E quanto à segurança dos containers?

Os containers são famosos, mas será que são seguros? A segurança dos containers é composta por diversos elementos variáveis: é necessário proteger a aplicação e o pipeline de containers, bem como os ambientes de implantação e a infraestrutura. Além disso, é necessário planejar a integração com as ferramentas e políticas de segurança da empresa. Para isso, você precisa de um bom plano. Podemos ajudar.


Podemos ajudar.

A Red Hat tem um longo histórico de colaboração com a comunidade open source, a fim de tornar tecnologias abertas, como os containers, mais seguras, estáveis e confiáveis. Essa é a nossa especialidade. E por isso também damos suporte a essas tecnologias. Sempre que você precisar, estaremos prontos para ajudar.

Com as tecnologias da Red Hat, você não terá dúvidas na hora de implantar e usar os containers. Seja para criar uma plataforma de desenvolvimento com containers, executar uma infraestrutura de containers no melhor sistema operacional do mercado ou fornecer armazenamento para o grande volume de dados gerados pelos containers, a Red Hat tem a solução perfeita para você.

Você pode fazer muito mais com os containers