O que são contêineres?
Um contêiner é um pacote leve e independente que encapsula um ambiente de execução completo, incluindo um aplicativo e suas dependências (bibliotecas, binários e quaisquer outros arquivos de configuração), aumentando a portabilidade, o dimensionamento, a segurança e a agilidade de um aplicativo.
Os contêineres são populares entre desenvolvedores e operadores porque oferecem uma maneira simples de implantar e gerenciar aplicativos, independentemente do ambiente de destino. Eles facilitam as práticas de DevOps e DevSecOps porque melhoram a transferência entre as equipes de desenvolvimento e operações.
Os contêineres promovem um consumo eficiente dos recursos, oferecendo alta densidade e utilização. Mesmo que os contêineres possam ser usados com quase qualquer aplicativo, eles são frequentemente associados a microsserviços, nos quais vários contêineres executam componentes de aplicativos ou serviços separados. Os contêineres que compõem um aplicativo normalmente são coordenados e gerenciados usando uma plataforma de orquestração, como o Kubernetes.
Os contêineres são criados empacotando aplicativos de várias imagens de um ou mais repositórios com quaisquer bibliotecas ou outras dependências de aplicativos, eliminando problemas de portabilidade e compatibilidade.

Uma nova maneira de criar contêineres para o Kubernetes

As sinergias entre contêineres e máquinas virtuais
Diferença entre contêineres e VMs
Quais são os benefícios de usar contêineres?
O uso de contêineres para criar aplicativos acelera o desenvolvimento de novas funcionalidades e incentiva um ambiente de inovação contínua. Os benefícios incluem:
Agilidade. A maior agilidade dos desenvolvedores aumenta a produtividade e a velocidade de desenvolvimento de aplicativos. Os contêineres simplificam os pipelines de CI/CD e são ideais para equipes de DevOps e implantações de microsserviços.
Dimensionamento e alta disponibilidade. Usando o Kubernetes, as implantações de contêineres podem ser dimensionadas de forma vertical ou horizontal à medida que os requisitos de carga de trabalho mudam, aumentando a disponibilidade do aplicativo.
Portabilidade. Os contêineres consomem menos recursos e são mais leves do que as VMs. Os aplicativos em contêineres não dependem da infraestrutura e operam da mesma forma onde quer que sejam implantados.
Resiliência. Um aplicativo em contêiner é isolado e desvinculado do sistema operacional e de outros contêineres; um contêiner pode falhar sem afetar outros contêineres em execução.
Padrões de contêineres
Segurança de contêineres
Os contêineres exigem alterar a forma como as políticas de segurança são implementadas e gerenciadas. A segurança deve ser incorporada o máximo possível no ciclo de vida do contêiner, usando uma abordagem de DevSecOps. As equipes de segurança, que trabalham com equipes de desenvolvimento e operações, adaptam as políticas de governança e conformidade para acomodar novas ferramentas e mudanças no ciclo de vida do aplicativo.
Automação de contêiner
O esforço manual desacelera as equipes de desenvolvimento. A automação de contêineres permite que os desenvolvedores se concentrem no código em vez do empacotamento. As imagens de contêiner são criadas em camadas. Na abordagem automatizada de criação de contêineres, sempre que uma camada é alterada, apenas essa camada precisa ser atualizada. Por exemplo, se apenas as bibliotecas do sistema precisarem ser atualizadas, será necessário recriar somente a camada em que as bibliotecas estão. Como as outras camadas permanecem inalteradas, a carga de testes e validação é reduzida, permitindo que contêineres atualizados sejam colocados em produção com mais rapidez e frequência.
Docker
Desde seu lançamento em 2013, o Docker tem sido muito vinculado a contêineres e continua sedo usado para criar imagens de contêineres. O ambiente do Docker inclui execução e criação de contêineres, além de gerenciamento de imagens. Como o Docker cria uma imagem de contêiner com padrão OCI, as imagens do Docker serão executadas em qualquer ambiente de execução de contêiner compatível com OCI.
Kubernetes
Casos de uso de contêineres
Para desenvolvedores
- Melhore a portabilidade dos aplicativos em diferentes plataformas e configurações, para que o código desenvolvido em uma versão de um compilador ou intérprete de linguagem seja executado sem falhas nas versões seguintes, sem precisar de revisões.
- Retire dos desenvolvedores o trabalho de desenvolver, testar e implantar na mesma infraestrutura. Dessa forma, quem escreve código no próprio laptop podem ter certeza de que o aplicativo será executado conforme desejado em qualquer outra infraestrutura, seja no servidor local ou em uma VM com base em nuvem.
- Facilite os processos de desenvolvimento ágil, como CI/CD, acelerando a aceitação e a implantação do código.
Para operações de TI
- Isole os aplicativos uns dos outros de maneira leve para melhorar a segurança.
- Migração perfeita de aplicativos em contêineres em diferentes versões do sistema operacional, topologias de rede ou configurações de armazenamento e plataformas de nuvem.
- Melhore a eficiência da TI permitindo que vários contêineres de aplicativos sejam executados em apenas uma instância do sistema operacional. Como os contêineres geralmente têm dezenas de megabytes, enquanto as VMs têm 10 gigabytes ou mais, um número substancialmente maior de contêineres pode ser executado em apenas uma instância de servidor.
Forneça dimensionamento sob demanda extremo para aprimorar as VMs, ativando instâncias de contêineres adicionais em milissegundos em vez de minutos.
Soluções e produtos relacionados
Modernização de aplicativos com o Kubernetes
Forneça o Kubernetes pronto para o desenvolvedor no data center ou na nuvem
Crie contêineres a partir do código-fonte para o Kubernetes
O VMware Tanzu Build Service automatiza a criação, o gerenciamento e a governança de contêineres em escala corporativa.
Gerenciamento multi-cloud do Kubernetes
O VMware Tanzu Mission Control é uma plataforma de gerenciamento Kubernetes multi-cloud que virtualiza a nuvem ao fornecer uma plataforma consistente baseada em Kubernetes que permite o gerenciamento, a operação e a distribuição de aplicativos em escala em qualquer nuvem.