Introdução ao Docker

Containers, Docker Inc, Docker e algumas de suas tecnologias

SHARE:

Olá! (◠‿◠✿) Vamos saber alguns conceitos introdutórios sobre o Docker?

Antigamente, se eu quisesse montar o meu sistema, no qual tem o banco de dados, a aplicação em si, enfim, várias partes, como eu tinha várias aplicações para este sistema eu acabava tendo vários servidores. Qualquer parte da aplicação ficava em um servidor físico. Isso gerava muuuuitos custos. Além de que, a capacidade era pouca aproveitada, deixando muitos recursos desperdiçados visto que nem sempre se tinha muitos acessos no sistema.

Para melhorar essa situação veio a solução da virtualização. As maquinas virtuais são tecnologias que foram possíveis de serem criadas desde que surgiu o Hypervisor. O Hypervisor é uma outra tecnologia que funciona ali em "cima" do seu sistema operacional (ou até do hardware) que permite a virtualização dos recursos físicos do seu sistema.

Virtualizar é criar uma maquina virtual lógica que tem acesso a um pedaço do seu HD, memoria e cpu. É literalmente como criar um computador dentro de outro! Desta forma eu consigo dividir o hardware ocioso em diversas maquinas virtuais :)

Porém nem tudo são flores 🌸...

Se eu quero instalar minha aplicação em uma maquina virtual, eu tenho que colocar também o sistema operacional (visto que ele fica ali entre o hardware e a aplicação). Sabemos que todo sistema operacional tem um custo, seja de ram, disco, etc. Você precisa de uma certa capacidade minima pra manter bem funcional. Se eu tiver por exemplo 6 maquinas virtuais em que preciso instalar minhas aplicações nela, e supomos que eu tenha em cada uma 1gb de RAM e 10gb de disco só pra manter minha aplicação, totalizando isso ficaria 6gb de ram e 60gb de disco de todas as maquinas!

Além desse custo, há também o da configuração do sistema operacional que ele pede, assim como atualizações que muda o sistema e até problemas de segurança. Você teria que fazer a manutenção em cada maquina virtual.

Então como melhorar? É ai que entra nossos containers!!

Containers

Um container nada mais é uma tecnologia que vai conter a sua aplicação, ou seja, a sua aplicação vai ser executada dentro desse container e ele vai funcionar no seu sistema operacional padrão mesmo!

Container

Eu vou criar um container para cada aplicação que quero rodar, e estes containers vão dividir as funções do sistema operacional, como redes, kernel, etc. Eu não vou ter mais um sistema operacional para cada aplicação, agora as aplicações estão dividindo o mesmo sistema! Algumas vantagens do container:

  • Muito mais leve que uma maquina virtual
  • Não tem o custo de manter múltiplos sistemas operacionais
  • Mais rápido de subir

Ok! Mas por que preciso de maquina virtual? Por que preciso de containers? Por que não posso pegar vários aplicativos e colocar direto no meu sistema operacional? É o que geralmente fazemos, né?

Problemas desta abordagem (vistos principalmente por um olhar mais corporativo que você pretende manter segurança):

  • Dois apps utilizando a mesma porta de rede?
  • E se um app começar a consumir muito de um recurso, como a CPU? Isso pode ser muito prejudicial!
  • E se cada app precisar de uma versão específica de uma linguagem?
  • E se um app congelar todo o sistema?

Não temos controle de como roda cada aplicação!!

Por isso que quando trabalhamos com containers a gente consegue limitar os recursos.

Nós ganhamos:

  • Melhor controle sobre o uso de cada recurso (CPU, Disco, Rede, etc)
  • Agilidade na hora de criar ou remover um container
  • Maior facilidade na hora de trabalhar com diferentes versões de linguagens e bibliotecas
  • Maior leveza que as maquinas virtuais visto que não tem o sistema operacional embutido

Comparando container com a VM

Afinal, o que é o Docker?

Existe a Docker Inc. que é a empresa que toma conta do docker, e a tecnologia em si de containers Docker.

Docker Inc.

A empresa do docker já se chamou uma vez de dotCloud. Ela era uma empresa de PaaS - Plataform as a Service, ou seja, uma empresa em que você pega o código da sua aplicação e envia pra ela, e ela toma todo cuidado para hospedar sua aplicação, como levantar servidor, etc.

A heroku, microsoft azure, google cloud platform, são alguns exemplos desse tipo de empresas.

Como nasceu o Docker

Quando o docker nasceu, a dotCloud utilizava a amazon web services (serviço que provê para você maquinas virtuais ou físicas). E o objetivo da dotCloud era pegar sua aplicação e hospedar, e pra subir a aplicação nós sabemos que precisa ter ali um sistema operacional.

A dotCloud fez diferente e introduziu o conceito de containers na hora de subir uma aplicação. A dotCloud criou o famoso docker, e o docker era a tecnologia que ela utilizava pra poder baratear o custo de você subir varias aplicações em uma mesma maquina, deu pra entender? A dotCloud criou o docker com a intenção de economizar na própria empresa! Ela alugava só um hardware lá da amazon e subia sua aplicação nele, e ela pegava esse mesmo hardware e dividia em diversos containers, utilizando como intermédio do sistema operacional e dos containeirs o Docker.

O docker é essa tecnologia que faz o intermédio pra gente entre os containers e o sistema operacional.

O Docker é uma coleção de tecnologias de containers para prover ferramentas modernas para deployar e rodar aplicações

Docker Engine

É o nosso amiguinho que está hosteando os nossos containers e que faz o intermédio com o sistema operacional.

Docker Compose

Um jeito fácil de definir e orquestrar múltiplos containers!

Docker Swarm

Uma ferramenta para colocar múltiplos Docker Host's para trabalharem juntos em um cluster.

Docker Hub

Um repositório com mais de 250 mil imagens diferentes para os seus containers.

Docker machine

Uma ferramenta que nos permite instalar e configurar em host virtual.


Espero que tenha curtido e lhe ajudado em algo!
Até logo! (◠‿◕✿)

Comentários

Prefere comentar em ânonimo? Siga os seguintes passos:

  • Clique no campo "Nome"
  • Marque os itens necessários, principalmente o último: "Prefiro publicar como um visitante"
  • Adicione um email
  • Agora só enviar seu comentário :)