Introdução ao Docker

Hoje vou mostrar um pouco dessa tecnologia que está virando a mesa do jogo na TI atualmente. De antemão anote todas as dúvidas e sugestões para no final comentar com tudo de uma vez, colaborar sempre é o melhor caminho para aprender de verdade.

Sobre o Docker

Vamos começar com a seguinte frase: “Docker é do satanás”. Se você se assustou, muito bem, é pra assustar mesmo.

Segundo o site oficial:

Docker is a platform for developers and sysadmins to develop, ship, and run applications. Docker lets you quickly assemble applications from components and eliminates the friction that can come when shipping code. Docker lets you get your code tested and deployed into production as fast as possible.

Agora imagine se você tivesse o poder de eliminar os requisitos do seu sistema a nível de software de uma vez por todas, bem vindo ao Docker.

Por exemplo, você está usando a versão 2 do Joomla, ela foi desenvolvida para trabalhar com a versão X do PHP e Y do MySQL, mas essas versões não são compatíveis com a versão do seu sistema operacional, com o Docker você pode rodar um sistema operacional compatível, o PHP X e o MySQL Y no seu sistema operacional nativo.

Se você pensar um pouquinho pode se perguntar: “Com Máquinas Virtuais eu consigo isso também.”. A questão é que as máquinas virtuais rodam TODO o Sistema Operacional mais a sua aplicação e o Docker roda APENAS a sua aplicação, quando eu falo apenas é sério, apenas os processos relacionados a sua aplicação estarão sendo executados.

Sentiu o poder? Agora vamos entender um pouco mais como funciona esse salvador da pátria.

Imagens e Containers

docker-filesystems-multilayerSendo bem simples e direto, Imagem é a Snapshot do armazenamento persistente. Como assim? Bom, inspirado nas tecnologias de versionamento de arquivos e suas vantagens, o Docker cria camadas com várias Snapshots dos arquivos e suas alterações e cada camada dessa é uma Imagem.

Por exemplo, suponhamos que eu tenha a Imagem A e nela eu tenho o arquivo vazio readme, se eu fizer uma edição nesse arquivo e persistir essas alterações eu terei a Imagem B e ela armazena apenas as alterações que realizei e a referência da Imagem A, mas na prática a Imagem B terá o meu arquivo readme alterado. E não para por ai, eu posso voltar na imagem A e fazer outra alteração, criando a Imagem C e assim por diante.

Uma Imagem sempre poderá ser vista como uma Árvore de Imagens caso se veja pela imagem raíz, ou Camadas caso se veja pela imagem final.

Container é o ambiente virtual criado a partir de uma Imagem, nele que podemos executar comandos e serviços. Containers não são persistidos em disco, então tenha muito cuidado quando for excluir um.

Confira um exemplo prático onde estou executando um Container da Imagem Debian e exibindo os processos:


arturluiz@POS000622: ~_002

Considerações Finais

Hoje só quis dar um gostinho do Docker pra vocês, espero sinceramente ter conseguido. Eventualmente estarei publicando tutoriais de como usar o Docker passo a passo e depois como fazer a implantação de serviços populares usando o Docker e suas ferramentas.

Comente