Introdução ao Docker
Seja bem vindo(a) ao curso de Docker!
O docker nos ultimos anos ganhou uma grande popularidade devido a grande flexibilidade em criar novos ambientes tecnologicos e compartilhar aplicações e recursos tecnologicos com todas as suas depedências de forma padronizada.
Primeiramente antes de começar a falar sobre o Docker, faz-se necessário contextualizar a tecnologia das Virtual Machines (Máquinas virtuais) e os Containers.
Virtualização de Máquinas
A tecnologia de virtualização de máquinas surgiu da necessidade de aproveitar melhor os recursos, que no decorrer do tempo a virtualização de servidores ofereceu vários benefícios, como a capacidade de gerenciar de maneira mais eficiente os aplicativos em um servidor.
A utilização da virtualização gerou as seguintes vantagens:
- Economia de custos;
- Provisionamento mais rápido de servidores e
- Recuperação de desastres mais eficiente
O desenvolvimento também se beneficiou com esta tecnologia, porque com uma maior uso de servidores maiores e mais rápidos liberou subsequentemente os recursos não utilizados para serem redirecionados para controle de qualidade, desenvolvimento, laboratório ou até mesmos outros projetos.
Dentro de cada máquina virtual, é executado um sistema operacional convidado. VMs com sistemas operacionais diferentes podem ser executados no mesmo servidor físico, uma VM UNIX por exemplo pode ficar ao lado de uma VM Linux, e assim por diante. Cada VM possui os seus próprios binários, bibliotecas e aplicativos aos quais atende, e a VM pode ter muitos gigabytes.
Containers
A tecnologia de virtualização do Sistema Operacional cresceu muito nos últimos anos para permitir que as aplicações utilizassem melhor os recursos computacionais e funcionassem de forma previsível quando movido de um ambiente de servidor para outro.
Os containers fornecem uma maneira de executar esses sistemas isolados de forma mais eficiente e em um único servidor ou sistema operacional host.
Os containers ficam em cima de um servidor físico e de seu SO host como por exemplo o Linux ou o Windows. Cada container compartilha o kernel do sistema operacional host, e geralmente os binários e bibliotecas.
Componentes compartilhados estão somente em modo leitura. Assim, os containers são excepcionalmente “leves”, eles têm apenas megabytes e levam apenas alguns segundos para iniciar, versus gigabytes e minutos para uma VM.
Eles também reduzem as despesas gerais de gerenciamento. Como eles compartilham um sistema operacional comum, apenas um único sistema operacional precisa de cuidados e alimentação para correções de bugs, patches e assim por diante. Esse conceito é semelhante ao que experimentamos com hosts de hipervisor: menos pontos de gerenciamento, mas um domínio de falha um pouco maior.
Docker
Docker é um software de container da empresa Docker Inc, escrito na linguagem GO, que fornece uma camada de abstração e automação para virtualização de sistema operacional utilizando a tecnologia de containers.
O Docker disponibilizou uma linguagem comum entre desenvolvedores e administradores de servidores, que é utilizada para construir arquivos com as definições da infraestrutura necessária e como a aplicação será disposta nesse ambiente.
Uma vantagem na utilização dessa tecnologia é a rapidez de como o ambiente do software é disponibilizado em relação a tecnologia de virtualização. Vejamos a seguir alguns outros benefícios:
- Possibilidade de configurar diferentes ambientes de forma rápida;
- Compartilhar de forma fácil os processos entre diferentes aplicativos;
- No Docker há a possibilidade de gerar imagens e números de versões e
- Garantir que o seu ambiente seja o mesmo que o de produção.