Please enable JavaScript.
Coggle requires JavaScript to display documents.
Containerização - Coggle Diagram
Containerização
Docker
é um projeto de código aberto para automatizar a implantação de aplicativos como contêineres portáteis e autossuficientes que podem ser executados na nuvem ou localmente
Os contêineres de imagens do Docker podem ser executados nativamente no Linux e no Windows. No entanto, as imagens do Windows podem ser executadas somente em hosts Windows e as imagens do Linux podem ser executadas em hosts Linux e Windows (usando uma VM do Hyper-V Linux), em que host significa um servidor ou uma VM
Os desenvolvedores podem usar ambientes de desenvolvimento no Windows, Linux ou macOS. No computador de desenvolvimento, o desenvolvedor executa um host do Docker em que as imagens do Docker são implantadas, incluindo o aplicativo e suas dependências
-
Como os contêineres exigem menos recursos (por exemplo, eles não precisam de um sistema operacional completo), eles são fáceis de implantar e são iniciados rapidamente
Isso permite que se tenha uma densidade mais alta, o que significa que pode-se executar mais serviços na mesma unidade de hardware, reduzindo assim os custos. Como um efeito colateral da execução no mesmo kernel, há menos
isolamento que as VMs
O principal objetivo de uma imagem é que ela torna o ambiente (dependências) o mesmo em diferentes implantações. Isso significa que pode-se depurá-lo em uma máquina e implantá-lo em outra máquina com a garantia de ser o mesmo ambiente
Uma imagem de contêiner é uma maneira de empacotar um aplicativo ou serviço e implantá-lo de maneira confiável e reproduzível. Podemos dizer que o Docker não é apenas uma tecnologia, mas também uma filosofia e um processo
Fluxo de trabalho
Ao usar o Docker, um desenvolvedor cria um aplicativo ou serviço e o compacta
juntamente com suas dependências em uma imagem de contêiner (Uma imagem é uma representação estática do aplicativo ou serviço e sua
configuração e dependências;)
Para executar o aplicativo ou serviço, a imagem do aplicativo é instanciada para
criar um contêiner, que será executado no host do Docker
-
Os desenvolvedores devem armazenar imagens em um registro, que atua como uma biblioteca de imagens e é necessário ao implantar em orquestradores de produção
O Docker mantém um registro público por meio do Docker Hub; outros fornecedores fornecem registros para diferentes coleções de imagens, incluindo o Azure Container Registry
Como alternativa, as empresas podem ter um registro particular no local para suas próprias imagens do Docker
-
-
caractéristicas
-
Os aplicativos em containers são executados em um host de containers que, por sua vez, é executado no sistema operacional (Linux ou Windows);
Os containers, portanto, ocupam um espaço significativamente menor do que as imagens de máquinas virtuais (VM);
-
Outro benefício da conteinerização é a escalabilidade. Pode-se dimensionar
rapidamente criando novos contêineres para tarefas de curto prazo;
Do ponto de vista do aplicativo, instanciar uma imagem (criar um contêiner) é
semelhante a instanciar um processo como um serviço ou aplicativo da web;
Para confiabilidade, no entanto, quando se executa várias instâncias da mesma imagem em vários servidores host, geralmente deseja-se que cada contêiner (instância de imagem) seja executado em um servidor host ou VM diferente em domínios de falhas diferentes
isolamento, portabilidade, agilidade, escalabilidade e controle em todo o fluxo de trabalho do ciclo de vida do aplicativo
-
Kubernetes
-
O Kubernetes usa o Docker para implantar, gerenciar e escalonar aplicativos em contêineres
Automatiza tarefas operacionais de gerenciamento de contêineres e inclui comandos integrados para implantação de aplicativos, implementação de alterações nos seus aplicativos, escalonamento de seus aplicativos
-
-
-
todos os objetos do Kubernetes podem e devem ser descritos em manifestos
chamados arquivos YAML do Kubernetes
Rancher
-
-
Implanta clusters Kubernetes de nível de produção do datacenter à nuvem até a borda, mas também os une com autenticação centralizada, controle de acesso e capacidade de observação
-
-
Arquitetura Docker
-
Docker Engine
-
O daemon do Docker (dockerd) escuta solicitações da API do Docker e gerencia
objetos do Docker, como imagens, contêineres, redes e volumes;
Registro do Docker
-
O Docker Hub é um registro público que qualquer pessoa pode usar, e o Docker está configurado para procurar imagens no Docker Hub por padrão, no entanto, pode-se executar um registro privado;
Quando se usa os comandos docker pull ou docker run, as imagens
necessárias são extraídas do registro configurado
Quando se usa o comando docker push, a imagem é enviada para o registro
configurado;
-
Imagens
-
Muitas vezes, uma imagem é baseada em outra imagem, com alguma
personalização adicional;
Pode-se criar as próprias imagens ou usar apenas aquelas criadas por outras pessoas e publicadas em um registro;
Para criar uma imagem, cria-se um Dockerfile com uma sintaxe simples para definir as etapas necessárias para criar a imagem e executá-la; • Cada instrução em um arquivo Dockerfile cria uma camada na imagem; • Quando se altera o Dockerfile e reconstrói a imagem, apenas as camadas que foram alteradas são reconstruídas. Isso faz parte do que torna as imagens tão leves, pequenas e rápidas, quando comparadas a outras tecnologias de virtualização;
Contêiners
-
Pode-se criar, iniciar, parar, mover ou excluir um contêiner usando a API ou a CLI
do Docker;
Pode-se conectar um contêiner a uma ou mais redes, anexar armazenamento a
ele ou até criar uma nova imagem com base em seu estado atual
Um contêiner é definido por sua imagem, bem como pelas opções de
configuração que se fornece quando o cria ou inicia
O Docker Engine combina os namespaces, grupos de controle e UnionFS em um wrapper chamado formato de contêiner;
-
Serviços
Os serviços permitem escalar contêineres em vários daemons do Docker, que funcionam juntos como um enxame (swarm) com vários gerentes e trabalhadores
Cada membro de um enxame é um daemon do Docker e todos os daemons se comunicam usando a API do Docker. Um serviço permite definir o estado desejado, como o número de réplicas do serviço que devem estar disponíveis a qualquer momento;
Por padrão, o serviço é balanceado por carga em todos os nós do trabalhador. Para o consumidor, o serviço Docker parece ser um único aplicativo. O Docker Engine oferece suporte ao modo swarm (enxame) no Docker 1.12 e superior;
Docker Swarm
-
Docker Node: É a instância do Docker Engine incluída no Docker swarm, possui dois tipos:
Manager Node: Responsável por todas as tarefas de orquestração e gerenciamento de contêiner necessárias para manter o sistema no estado desejado, como manter o estado do cluster, agendar os serviços e atender os endpoints HTTP do modo swarm.
-
Docker Service: É uma lista de tarefas que devem ser executadas nos nós de trabalho ou de gerenciamento
-
todos os objetos Swarm podem e devem ser descritos em manifestos, .YAML,
chamados arquivos de stack
LXC – Linux Container
Linux Containers (LXC) é um método de virtualização em nível de sistema operacional para executar vários sistemas Linux isolados (contêineres) em um host de controle usando um único kernel Linux.. Por meio de uma API e ferramentas simples, permite que os usuários do Linux criem e gerenciem facilmente containers de sistema ou aplicativo
-
-
Um contêiner Linux® é um conjunto de 1 ou mais processos isolados do resto do sistema. Todos os arquivos necessários para executá-los são fornecidos a partir de uma imagem distinta, contêineres Linux são portáteis e consistentes à medida que passam do desenvolvimento ao teste e, finalmente, à produção.
-
Containerização é uma abordagem para desenvolvimento de software em que um aplicativo ou serviço, suas dependências e sua configuração (abstraída como arquivos de manifesto de implantação) são empacotados juntos como uma imagem de contêiner;
O aplicativo em contêiner pode ser testado como uma unidade e implementado como uma instância de imagem do contêiner no sistema operacional do host (hospedeiro);