Primeiros passos com Docker - Blog 4Linux
14 de setembro de 2020 Ricardo Caeiro 10684 Views
Apesar do termo container ter se popularizado nos dias de hoje com a ferramenta Docker, o conceito já era empregado com utilizações de containers Linux e muitos casos de containers Java (JVM) principalmente para aplicações web, como utilizado nas plataformas JBoss e Wildfly.
Surgimento do Docker
Originalmente o Docker surgiu em 2013 quando Solomon Hykes, fundador e CEO da dotCloud, realizou uma palestra na 'Python Developers Conference' em Santa Clara, California. Poucas semanas após isso rapidamente o projeto se tornou open source e através do Github teve contribuições de centenas de desenvolvedores que ajudaram a melhorar e disseminar a tecnologia que foi disruptiva para o mercado de TI mudando a forma de como as aplicações são disponibilizadas, dando praticidade, portabilidade e agilidade.
Inicialmente é muito comum que o conceito do Docker seja confundido com o de máquinas virtuais devido à cultura e metodologia de trabalho utilizada durante anos, porém o Docker é muito mais que um provisionamento virtual e com proposta bem diferente. Enquanto uma máquina virtual é feita para perdurar durante um bom tempo, mesmo que a fluidez de provisionamento seja rápido e que se utilize de plataformas em cloud para criar e deletar máquinas, o container Docker já nasce com o propósito de ser substituível em um certo momento, em um novo deploy ou até mesmo em minutos após a execução de uma única tarefa.
Justamente essa volatilidade do container o faz eficaz, pois com o Docker você não precisa se preocupar com bibliotecas do sistema operacional, drivers, partições e etc, o Docker possui um repositório de imagens públicas em cloud, o DockerHub, em que é possível criar um container quase que instantaneamente através do comando "docker run" e dizendo qual imagem Docker este container deve utilizar para realizar o setup.
Existem diversas imagens enxutas desde sistemas operacionais contento somente o mínimo necessário para uma aplicação ser executada, até imagens com serviços já instalados para serem utilizados como o caso da imagem "httpd:2.4" que traz um sistema operacional Linux Alpine com o serviço Apache HTTP instalado.
Este tipo de funcionalidade traz fluidez e agilidade para os processos de deploy, porém deve ser levado em consideração que aplicações que serão aplicadas em containers já devem ser estruturadas com o conceito "stateless", que não guarda o estado da aplicação e nem dados dentro do container, pois caso contrário inviabilizaria uma das principais vantagens da utilização do Docker que é a versatilidade para de se encerrar o container em caso de problemas ou novas atualizações na aplicação.
Antes de iniciar a instalação certifique-se de ter permissão de super usuário, será necessário adicionar o repositório do Docker em seu sistema operacional para realizar o download do pacote, para isso execute a sequência de comandos a seguir:
Nesta etapa faremos o build de uma aplicação para gerar uma imagem de container que será executada posterirormente para simularmos um deploy. Para isso iremos utilizar um componente do Docker chamado Dockerfile, um arquivo de configuração que irá nos auxiliar no build, contendo informações como imagem de referência, arquivos a serem copiados e pacotes adicionais para dependências da aplicação para a construção da imagem do container. Siga os passos abaixo:
# Copiando o conteúdo do diretório que criamos para dentro do diretório do container
Agora no mesmo diretório que estamos, crie um arquivo chamado "requisitos.txt" com o conteúdo "Flask" que será utilizado para informar os pacotes adicionais como no exemplo:
Atenção para a endentação do código!
Para iniciar um container Docker utilizaremos o comando abaixo com os parâmetros "-d" para o container ser executado em background, e também o "-p" que indicaremos qual porta de acesso de nosso computador irá direcionar as requisições para a porta que configuramos no container, e também será necessário informar o nome da imagem conforme a tag utilizada anteriormente:
O que vimos até aqui foi somente a parte básica inicial do uso do Docker, seu potencial pode ser explorado ainda mais. Há outras formas de realizar o build e o deploy do container utilizando outros componentes do Docker como o "docker-compose" que permite você criar uma estrutura de provisionamento mais complexa, pois com ele é possível informar até quantas replicas deste mesmo container você irá querer executar de uma só vez entre outras coisas.
Também há outras tecnologias que podemos utilizar para complementar e falicitar o uso e execução de nossos containers, já é muito comum realizarmos o provisionamento e/ou consumirmos containers Docker como serviço em plataformas cloud. Há outras ferramentas que fornecem maior facilidade de gerenciamento e provisionamento do Docker como o Kubernets e até interface gráfica de monitoramento como o Openshift.
Com este artigo podemos concluir que cada vez mais os profissionais e companhias estão buscando maior facilidade e agilidade para o provisionamento de ambientes e deploy de aplicações, as vezes até sem a necessidade de uma interação humana diminuindo a probabilidades de erros e a confiabilidade de execução, pois teremos a garantia de que dentro do container existirá somente o que é necessário e tudo o que é preciso para que a aplicação seja executada.