Primeiros passos instalar container docker

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.

Exemplos de implantação

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:

  1. Atualizando da lista de pacotes do repositório atual:
$ sudo apt-get update
  1. 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
  1. Instalando a chave criptográfica do repositório:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 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 poderemos iniciar a instalação do Docker, siga os passos:

  1. Atualizando da lista de pacotes do repositório atual:
$ sudo apt-get update
  1. 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:

  1. 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
  1. 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 Python
FROM python:3.7-slim

# Selecionando o diretório do container para a execução dos comandos a seguir
WORKDIR /app

# Copiando o conteúdo do diretório que foi criado, para dentro do diretório do container
COPY . /app

# Instalando pacotes adicionais informados no arquivo requisitos.txt
RUN pip install --trusted-host pypi.python.org -r requisitos.txt

# Habilitando a porta 80 do container para receber conexões externas
EXPOSE 80

# Definindo variável de ambiente
ENV NAME World

# Executando aplicação Python após inicialização do container
CMD ["python", "app.py"]
EOF
  1. 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.py
from flask import Flask
import os
import socket

app = 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!

  1. 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:

  1. 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:

  1. 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 ls
docker 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 réplicas 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 facilitar o uso e a 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 Kubernetes e até interface gráfica de monitoramento como o OpenShift.

Sobre o futuro

Com este artigo podemos concluir que cada vez mais os profissionais e companhias estarã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.

Você gostou deste artigo?

Veja outros que temos:

Fique por dentro das novidades:

Conheça nosso blog, com diversos artigos técnicos

Fique por dentro das novidades relacionadas aos softwares open source usado em nossas soluções.

Quer entrar para o mundo Devops?

Conheça nosso curso online de Devops gratuito!

Quer receber todos os cases da 4Linux em formato de E-book?

Ele pode servir de inspiração ou rumo para o seu próximo projeto utilizando software open source.