Containers 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 disponibilizados por uma imagem individual. 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 de usar 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 usar containers Linux?
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ê quer emular esses ambientes localmente, sem a necessidade de recriar os ambientes do servidor. Como fazer a aplicação funcionar em ambientes diferentes, ser aprovada pela garantia de qualidade e ser implantada sem muito esforço, sem a necessidade de reescrever ou realizar reparos no código? A resposta é: containers.
O container que tem a aplicação inclui as bibliotecas, dependências e arquivos necessários para migrá-la para a produção sem maiores problemas. Na verdade, o conteúdo de uma imagem de container, criado com uma ferramenta open source como a Buildah, pode ser pensado como uma instalação de uma distribuição Linux, porque 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, onde portabilidade, configurabilidade e isolamento são necessários. Com containers Linux, seu negócio se 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 que escolher a plataforma de aplicações em container ideal é tão importante quanto os próprios containers.
Com o Red Hat® OpenShift®, você tem tudo o que precisa para desenvolvimento e implantação em Kubernetes, containers empresariais e nuvem híbrida.
Mas isso não é o mesmo que virtualização?
Não exatamente. As duas tecnologias são complementares. Veja uma maneira fácil de diferenciá-las:
- 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.
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 podem ser 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 assegurar que os trabalhos contidos no laptop do desenvolvedor sejam executados corretamente no ambiente de produção. Uma imagem de container especial chamada golden image cria uma base consistente e confiável para a configuração do sistema. 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 (com vários containers). Além disso, é possível orquestrar as aplicações de multicontainer em diversas nuvens.
Há até mesmo ferramentas que combinam o gerenciamento de máquina virtual e a orquestração de containers. Descubra mais sobre elas neste evento do Red Hat Summit 2020, que inclui uma sessão de lançamento de uma ferramenta desse tipo.
O que é LXC?
O projeto Linux Containers (LXC) é uma plataforma de aplicações em container open source que fornece um conjunto de ferramentas, templates, 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 que pode ser instalado em vários sistemas baseados em Linux O LXC pode estar disponível por meio do repositório do pacote da sua distribuição Linux.
História 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 que o container Linux é 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 framework 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 asseguram 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 empresariais 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.
É seguro usar 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, 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.
Por que escolher a Red Hat?
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.
As tecnologias da Red Hat eliminam as suposições para executar os containers da maneira certa. 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ê.