domingo, 16 de maio de 2021

Desde os primórdios até os Containers.

 Quando comecei a trabalhar na área de informática(1999/2000) , haviam servidores dedicados para cada serviço disponibilizado (e-mail, ftp, arquivos, aplicações, banco de dados, servidores web entre outros). Há pouco atrás, soube que esses servidores eram conhecidos como BARE METAL. 

Com o aumento da quantidade de servidores, havia-se a necessidade de reduzir a quantidade destes por conta de espaço. Optou-se então pela construção de servidores maiores. Por conta disso, surgiu uma tecnologia capaz de dividir uma máquina grande em diversos servidores. A virtualização é a tecnologia que permite transformar um servidor físico em diversos servidores virtuais. 

Os virtualizadores possibilitam o fatiamento dessas máquinas em diversas máquinas virtuais, isoladas cada uma com seu sistema operacional, disco entre outras coisas. Essa solução é muita usada ainda hoje. Contudo, existem serviços que consomem poucos recursos computacionais, o que leva a um desperdício desses recursos. Exemplo: Vamos imaginar um servidor para rodar um microserviço. Queimaríamos uma licença de sistema operacional, dedicaríamos memória e disco para este serviço. E quem nunca desenvolveu uma aplicação que rodava perfeitamente na sua máquina e ao migrar a aplicação para outro servidor, a aplicação parava de funcionar? Para resolver este problema, eis que surgem os containers.

Um Container nada mais é do que um ambiente isolado contido em um servidor que, diferentemente das máquinas virtuais, divide um único host de controle. Os containers compartilham o mesmo kernel do sistema operacional e isolam os processos da aplicação do restante do sistema.

Na prática, o sistema operacional  e o hypervisor são eliminados e o host entra em contato direto com as bibliotecas. Com essa ligação, os itens ficam portáveis para qualquer outro host que também possua o sistema de virtualização instalado. 

Quem saiu na frente no utilização desse tipo de tecnologia foi uma empresa sediada nos Estados Unidos (São Francisco) chamada Docker.

A Docker criou uma plataforma open source que facilita a criação e administração de ambientes isolados. Ele possibilita o empacotamento de uma aplicação ou ambiente dentro de um container, se tornando portátil para qualquer outro host que contenha o Docker instalado. Então, você consegue criar, implantar, copiar e migrar de um ambiente para outro com maior flexibilidade.

E como é que funciona essa plataforma?  Através de um arquivo conhecido como Dockerfile é descrita uma imagem com todas as dependências necessárias para criação do container. Após bildar esse arquivo é gerada uma imagem que pode ser enviada para um repositório, estilo github, chamado pelo nome de DockerHub. Daí ao executar o container, caso o mesmo já não esteja na máquina de trabalho, o DockerEngine baixa a imagem para essa máquina.

Comandos do Docker

Usar o docker (via CLI) consiste em passar a ele uma opção, comando e argumentos.

docker [option] [comando] [argumento]

Como eu sei quais as imagens disponíveis no meu repositório local?

docker images

Como adicionar imagens locais?

docker search imagem

docker pull imagem

Como remover imagens locais?

docker rmi imagem

Criar um container

docker run imagem

Criar um container e entrar no Terminal

docker run -it imagem

Criar um container com um apelido

docker run --name ubuntinho ubuntu

Verificar o estado ou encontrar o ID de um container

docker ps

Remover um container

docker rm nomecontainer

Criando imagens com o dockerfile

O Dockerfile é um arquivo de texto que contém as instruções necessárias para criar uma nova imagem de contêiner. Essas instruções incluem a identificação de uma imagem existente a ser usada como uma base, comandos a serem executados durante o processo de criação da imagem e um comando que será executado quando novas instâncias da imagem de contêiner forem implantadas.

Para criar um Dockerfile é simples, basta criar um arquivo com o nome Dockerfile.

Para gerar a imagem a partir do Dockerfile, executamos o comando abaixo no mesmo local que o arquivo se encontra:

docker build -t nome_da_imagem .

Para criar o container a partir dessa imagem construída, podemos executar o comando:

docker run nome_da_imagem

Até aqui a gente viu como criar um container, agora vamos imaginar que queremos criar um container com mysql, outro com PHP e ainda um que contenha um serviço de mensageria do tipo RabbitMQ. Fácil né? É só subir container por container. Mas isso prático? Não né! É aí que entra um cara chamado Docker-composer.

O docker-compose é uma ferramenta do Docker que, a partir de diversas especificações, permite subir diversos containeres e relacioná-los através de redes internas.

Exemplo de um arquivo docker-compose(subindo php, mysql e phpmyadmin). Executar: docker-compose up -d


Obviamente, essa é uma introdução ao assunto. Vamos que vamos!

Nenhum comentário: