Já conhece o Docker?

Hoje vamos falar sobre ele!

A Amazon AWS conceitua o docker como sendo uma plataforma de software que permite a criação, o teste e a implantação de aplicações rapidamente. O Docker cria pacotes de software em unidades padronizadas chamadas de contêineres que têm tudo o que o software precisa para ser executado, inclusive bibliotecas, ferramentas de sistema, código e runtime. O modelo de isolamento utilizado no Docker é a virtualização em nível de sistema operacional, que é um método de virtualização onde o kernel do sistema operacional permite que múltiplos processos sejam executados isoladamente no mesmo host. Esses processos isolados em execução são denominados no Docker de contêiner.

O Docker utiliza contêiner para “isolar” sua aplicação, que após ser transformada em uma imagem Docker, poderá ser reproduzida em plataforma de qualquer porte, ou seja, caso sua aplicação funcione sem falhas em seu notebook, ela funcionará também no servidor ou no mainframe. É o famoso conceito de “Construa uma vez, execute onde quiser”. Ao usar o docker, é possível implantar e escalar rapidamente aplicações em qualquer ambiente e ter a certeza de que o seu código será executado.

Para fazer uso de todo potencial do docker é necessário internalizar bem o conceito de Imagem Docker e Contêiner. Objetivando explicar essa diferença de forma mais didática, será feito uma analogia entre classes e objetos utilizados na programação orientada a objetos e as imagens e contêineres do Docker. A classe pode ser comparada a uma forma para assar bolos. Uma forma de bolos possui especificações próprias, como altura, largura, profundidade e formato. Na orientação a objetos essas especificações são conhecidas como atributos e todos os bolos assados nesta forma terão as mesmas especificações da forma a qual foram assados. Os bolos serão comparados aos objetos porque, apesar da massa de bolo ser a mesma, os bolos assados em formas quadradas serão quadrados e os assados em formas redondas serão redondos e assim por diante. Uma classe é o molde para criar objetos e podemos criar quantos objetos forem necessários com uma única classe, igual a uma forma de bolos. Uma forma de bolo tem a capacidade de assar quantos bolos forem necessários e todos eles terão basicamente o mesmo formato da forma.

Neste mesmo raciocínio, a Imagem Docker é comparada a Classe (forma) e o Contêiner é comparado ao objeto (bolo). A imagem define todas as especificações para um contêiner e é na imagem que estão definidos todos os pré-requisitos necessários para a aplicação funcionar corretamente, tais como extensões, configurações, pacotes, etc. Portanto a imagem Docker nada mais é que um template de um determinado Sistema Operacional, base Unix, contendo ou não um ou mais softwares específicos. Imagens podem serem criadas através do arquivo de configuração Dockerfile que oportunamente explicaremos em outro post. O contêiner é o processo criado utilizando as definições de uma imagem. De forma prática, contêineres são uma forma de virtualização em nível de sistema operacional que permite rodar múltiplos “sistemas” isolados em um único sistema operacional real (host). Esses sistemas isolados conseguem ser, a partir da proteção dos contêineres, efetivamente isolados e limitados tanto em uso de disco, quanto em memória RAM e CPU. Viu como foi molezinha entender a diferença entre imagem e contêiner?

Vantagens ao utilizar Docker

Um ponto positivo na adoção do docker é a agilidade na disponibilização de novos ambientes, porque suprime, ou diminui consideravelmente, o tempo gasto com a configuração de novos ambientes ou a solução de problemas causados por diferenças entre os ambientes.

A escalabilidade horizontal também é uma vantagem do docker porque os contêineres são “instâncias” de imagens, e por isso podemos de forma simples criar/lançar vários contêineres de uma mesma imagem, aumentando o número de instâncias online de acordo com a demanda de acesso. A destruição e desligamento de contêineres também ocorre de forma muito simples.

A portabilidade do docker permite também aplicações serem transferidas de máquinas de desenvolvimento locais para outras máquinas locais ou para implementações em homologação ou produção de forma simples, bastando mover a imagem para qualquer serviço local ou de nuvem que eu deseje usar, desde que ele possua o Docker disponível para uso.

A implantação, identificação de problemas e rollbacks para correções de erros é simples quando pequenas aplicações estão em contêineres.

O que não devo fazer utilizando Docker:

Docker não resolve todos os problemas do mundo da TI e existem pontos que devem ser respeitados. Primeiro ponto importante: Não trate o Contêiner Docker como uma máquina virtual. Ele é apenas um serviço, um processo do host hospedeiro e precisa ser encerrado e iniciado quando possível.

Segundo ponto de atenção: Não armazene dados dentro do Contêiner Docker! Sempre que houver a necessidade de armazenar dados, como em contêineres de banco de dados, faça uso do mapeamento de volumes para armazenar os dados dinâmicos no seu host. Caso não utilize este recurso, todos os dados armazenados no contêiner serão perdidos caso seu contêiner seja finalizado por qualquer motivo. Como dica sugere-se sempre assegurar que o host hospedeiro possua os recursos necessários de segurança para acesso aos Contêineres Docker.

Conclusão

O Docker oferece a você um conjunto completo de ferramentas de alto nível para transportar tudo que constitui uma aplicação, mas ele não é uma solução mágica e seu uso deve ser analisado pontualmente para cada situação. Uber, Spotify, The Washington Post, PayPal, New Relic, Groupon, General Eletric, ebay e milhares de tantas outras são exemplos de empresas que usam docker atualmente. E você já começou?

Gostou? Que legal!!! Ajude divulgando Acthos Tecnologia. Não gostou? Não tem problema, deixe seu feedback para que possamos estar sempre melhorando.

Abraços!

Referências

Site oficial: https://www.docker.com/

Repositório do Código Fonte: http://github.com/docker/docker/

http://www.sinestec.com.br/blog/docker-fundamentos-conceito-e-arquitetura/

Por que usar Docker?

Deixe uma resposta