Docker e Kubernetes

Docker e Kubernetes

Hoje em dia no desenvolvimento de software nós temos diversas maneiras de simular ambientes os quais podemos gerenciar e fornecer estrutura para manter código, partindo daqui sabemos temos diferentes tecnologias as quais podemos utilizar para suportar código, podemos dividir isso em duas classificações de camadas os containers e as virtualizações.

Virtualização

Tecnologia responsável pela separação a nível de máquina, incluindo componentes de hardware e até mesmo o kernel.

Container

Tecnologia responsável por separar aplicações e responsabilidades a nível de SO divindo diversas camadas através de namespaces.

O que é o Docker ?

Docker é uma plataforma que oferece virtualização a nível de SO ( linux ) assim podendo fazer a distribuição de software em pacotes que permitem comunicação e gerenciamento individual.

essa técnologia pode também ser definida de modo prático em dois componentes, os componentes e as imagens.

Imagens

São componentes imutáveis que permitem a criação de software possibilitando a cópia de suas camadas mais baixas para uma nova camada de leitura e escrita, permitindo assim a manipulação de containers que tem como sua base aquela imagem.

Apartir de imagens do docker você pode criar a quantidade de containers que achar necessário, além de poder criar a sua própria imagem de um dockerFile, assim que aplicada poderemos adicionar ela a um repositório de imagens ou mesmo puxar uma imagem de lá com o comando docker pull < NomeDaImagem > .

Container

É uma componente virtualizado que permite a manipulação a nível de SO e pode ser montado a partir de uma imagem, recebendo desde aplicações até configurações de rede, como o nível de rede em que a máquina irá se encontrar.

Assim que uma imagem é salva no repositório local é possível criar uma vasta quantidade de containers, e configurar o nível de rede deles, fazendo assim com que um container possa se conectar com o outro até mesmo a nível de DNS.

Nós podemos também criar muitos containers de uma vez inclusive utilizando imagens préviamente salvas, através de um arquivo que usualmente chamamos de docker-compose.yml e utilizando o comando docker compose up < Nome do Arquivo >

Os containers são criados para serem utilizados apenas em tempo de execução, uma vez que você para um deleta um container ou mesmo para sua execução, tudo que estivesse em memória volátil dentro dele será perdido.

Armazenamento

Podemos manter pastas compartilhadas entre o host e o container, onde tudo oque for salvo, será utilizado também por 1-n containers.

porém a maneira mais famosa de armazenar dados é através dos volumes que além de serem compartilhados tem um espaço dentro das ferramentas do docker onde podem ser gerenciados por um ambiente criado e manipulado pelo docker.

image.png

Orquestração de Containers

Um container pode ser criado de diversas maneiras e pode ser quebrado assim como qualquer aplicação normal, logo ter uma ferramente que gerencia suas máquinas e containers garantindo a saúde da aplicação pode ser uma boa escolha ainda mais em uma plataforma de cloud onde você pode fazer uso de recursos que apenas se limitam a quantidade de usuários que veem até o seu site.

o kubernetes é uma ferramente que te ajuda a provisionar infraestutura como código, gerenciando e provisionando ifraestrutura em um cluster, podendo assim subir ou matar máquinas com 1-n containers na unica intenção de manter a sua aplicação saúdavel.

utilizando da escala horizontal o kubernetes pode subir diversas máquinas com diferentes containers e diferentes serviços, permitindo a comunicação interna e externa entre esses serviços.

Todos os processos descritos nesse artigo podem ser automatizados, criando assim uma sensação de aplicação viva e estável onde se pode trabalhar e deixar trabalhar sem problemas.