Docker, Docker Machine, Circle CI and Docker Hub

Yay, Docker!

Quantos recursos seu servidor irá precisar? O quanto você irá escalar? Como podemos aproveitar o espaço restante em um servidor?
Imagine a seguinte situação: Queremos que diferentes aplicações rodem em um mesmo server, entretanto essas diferentes aplicações necessitam de diferentes Sistemas Operacionais para serem executadas. Neste caso, instalariamos Maquinas Virtuais neste Sistemas Operacional e cada  VM com sua aplicação.

No entanto, isto é custoso 🙁
Cada VM consosme memório do SO principal em que é  executado, pois a VM possui todo um SO também sendo executado.  Por exemplo, se dois aplicativos precisarem utilizar a mesma porta de rede? Precisaremos de algo para isolar uma aplicação da outra. E se uma aplicação consumir toda a CPU, a ponto de prejudicar o funcionamento das outras aplicações?

docker

Já utilizando docker, conseguimos compartilhar o mesmo SO, mas podendo cada um ser executado de forma isolada 🙂
Um container funcionará junto do nossos sistema operacional base, e conterá a nossa aplicação, ou seja, a aplicação será executada dentro dele e dessa formar podemos dividir as funcionalidades do Sistemas Operacional.

Por exemplo, podemos cirar containers para conter uma aplicação ou um microserviço que pode ser escalado de forma isolada.

Para isso utilizamos um Dockerfile onde fica a “receita” para a criação de uma imagem que ficará armazenado o nosso container.

dockerfile

docker build -t my-docker-app .

Com a imagem pronta podemos fazer o push em uma repositorio de imagens como o docker hub e deixa – la disponível para podermos fazer um deploy em uma cloud 🙂

O Docker possui uma ferramente chamada Docker-Machine e com ela podemos fazer um deploy rapido e fácil apenas pela linha de comando sem sequer abrir o browser.
Essa ferramenta possui drivers de conexão com as princiais clouds conhecidas como AWS, Azure, Digital Ocean … Além de tudo, possui uma toda uma stack onde conseguimos utilizar swarms e provisionarmos nodes para escalarmos 🙂

No vídeo mostro um pequeno exemplo de uma aplicação com spring boot sendo executada em um container e tambem utilizando circleci para construirmos nossa imagem e envia la para nosso repositorio de imagem no docker hub. Após isso mostro a criação de uma Maquina Virtual Docker na Digital Ocean e também o deploy da nossa imagem na VM provisionada 🙂

 

magic

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.