Se vocรช chegou atรฉ aqui, jรก deve ter lido o artigo โO que รฉ dockerโ e se ainda nรฃo o fez, recomendamos a leitura antes de prosseguir.
Aprenda a criar seu primeiro container Docker
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, Califรณrnia. 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.
Benefรญcios do Docker
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.
Transforme-se em um profissional em Containers requisitado pelo mercado.
Conheรงa nossa Assinatura de Cursos Containers:
Composta por
6 cursos
+180 horas de conteรบdo
1 ano de acesso ร plataforma
Acesso imediato aos cursos
Com 2 principais vantagens:
- รnica plataforma de curso com cursos prรกticos e aula ao vivo.
- รnica escola que tambรฉm implementa projeto trazendo a experiรชncia para sala de aula.

Exemplos de implantaรงรฃo do Docker
O primeiro passo para a utilizaรงรฃo รฉ realizarmos a instalaรงรฃo do Docker, para a demonstraรงรฃo serรฃo utilizados exemplos para o sistema operacional Linux (Ubuntu/Debian).
Prรฉ-Requisitos:
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:
- Atualizando da lista de pacotes do repositรณrio atual:
$ sudo apt-get update
- Instalando pacotes para permitir o apt utilizar repositรณrios sobre HTTPS:
$ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common
- Instalando a chave criptogrรกfica do repositรณrio:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- Adicionando o repositรณrio do Docker ร lista de repositรณrios do sistema operacional:
sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"
Instalaรงรฃo:
Agora sim podemos iniciar a instalaรงรฃo do Docker, siga os passos:
- Atualizando da lista de pacotes do repositรณrio atual:
$ sudo apt-get update
- Instalando a รบltima versรฃo do Docker e seus componentes:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
Build da imagem:
Nesta etapa faremos o build de uma aplicaรงรฃo para gerar uma imagem de container que serรก executada posteriormente para simularmos um deploy. Para isso utilizaremos 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 e serem copiados e pacotes adicionais para dependรชncias da aplicaรงรฃo para a construรงรฃo da imagem do container.
Siga os passos abaixo:
- Crie um diretรณrio qualquer para utilizarmos na construรงรฃo da imagem, apรณs isso entre neste diretรณrio como no exemplo:
mkdir docker-lab ; cd docker-lab
- Agora vamos criar um arquivo com nome โDockerfileโ e inserir automaticamente o seu conteรบdo, para isso digite na linha de comando o que estรก abaixo:
cat << EOF > Dockerfile# Imagem de referรชncia PythonFROM python:3.7-slim# Selecionando o diretรณrio do container para a execuรงรฃo dos comandos a seguirWORKDIR /app# Copiando o conteรบdo do diretรณrio quefoi criado,para dentro do diretรณrio do containerCOPY . /app# Instalando pacotes adicionais informados no arquivo requisitos.txtRUN pip install --trusted-host pypi.python.org -r requisitos.txt# Habilitando a porta 80 do container para receber conexรตes externasEXPOSE 80# Definindo variรกvel de ambienteENV NAME World# Executando aplicaรงรฃo Python apรณs inicializaรงรฃo do containerCMD ["python", "app.py"]EOF
- 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:
echo Flask > requisitos.txt
4. Criaremos agora o arquivo de nossa aplicaรงรฃo Python, assim continuando no mesmo diretรณrio criaremos um arquivo com o nome de app.py e vamos inserir novamente ao mesmo tempo o seu conteรบdo, assim digite na linha de comando o que estรก abaixo:
cat << EOF > app.pyfrom flask import Flaskimport osimport socketapp = Flask(__name__)@app.route("/")def hello():html = "<h3>Hello {name}!</h3>" \"<b>Hostname:</b> {hostname}<br/>"return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname())if __name__ == "__main__":app.run(host='0.0.0.0', port=80)EOF
Atenรงรฃo para a indentaรงรฃo do cรณdigo!
- Tudo pronto para realizarmos a construรงรฃo de nossa imagem. No comando a seguir iremos utilizar o parรขmetro โ-tโ ou โโtagโ que servirรก para identificarmos a nossa imagem com um nome, apelido ou atรฉ mesmo versรฃo. Caso a versรฃo de build nรฃo seja informada neste parรขmetro o Docker assumirรก por padrรฃo que รฉ a รบltima (latest). Ao final do comando tambรฉm deveremos informar o contexto do Dockerfile, em nosso caso o mesmo diretรณrio em que estamos trabalhando, representado no Linux pelo caracter โ.โ, veja:
sudo docker build --tag=testpy .
Para verificar as imagens criadas no Docker vocรช pode executar o comando:
sudo docker image ls
Deploy do container:
Agora veremos como iniciar a aplicaรงรฃo construรญda sendo executada dentro de um container Docker, atravรฉs da imagem gerada no build:
- 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 direcionarรก as requisiรงรตes para a porta que configuramos no container. Ttambรฉm serรก necessรกrio informar o nome da imagem conforme a tag utilizada anteriormente:
docker run -d -p 80:80 testpy
Tente acessar no seu browser a url http://localhost/ vocรช deverรก visualizar algo parecido com a imagem abaixo:

- Para finalizar o container em execuรงรฃo digite o comando abaixo adicionando no final o hostname que foi informado no browser. Esse hostname รฉ o ID do container criado e tambรฉm pode ser identificado usando o comando โdocker container lsโ:
docker container lsdocker rm -f โidโ
Alรฉm do bรกsico
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.
Outro mรณdulo do Docker รฉ o Swarm, responsรกvel por criar, orquestrar e balancear todo o seu cluster de containers, garantindo alta disponibilidade e confiabilidade.
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.