Criando imagens

O Docker pode construir automaticamente imagens lendo as instruções de um arquivo Dockerfile.

Dockerfile

O arquivo Dockerfile funciona como uma receita de bolo contendo as instruções de configuração para a configuração e execução do seu contêiner.

Neste exemplo, criaremos uma imagem de servidor web que exibirá uma página personalidada.

Servidor web

Crie uma pasta para armazenar os arquivos necessários para nossa imagem:

$ mkdir web
$ cd web

Crie um arquivo chanado index.html com o seguinte conteúdo:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Página em manutenção</title>
</head>
<body>
<article>
    <h1>Página de Teste!</h1>
    <div>
        <p>Esta é uma página de teste.</p>
    </div>
</article>
</body>
</html>

Crie um arquivo chamado Dockerfile com o seguinte conteúdo:

FROM  ubuntu:xenial

LABEL maintainer="Divisão de Desenvolvimento de Sistemas<devsis@ufvjm.edu.br>"

RUN apt update && apt install -y nginx

EXPOSE 80

COPY index.html /var/www/html

CMD ["nginx", "-g", "daemon off;"]

Detalhando do Dockerfile

  • FROM: imagem a partir da qual nossa nova imagem será construída
  • LABEL: rótulo com informações a respeito da imagem
  • RUN: executa comandos para configuração do contêiner
  • EXPOSE: porta de um serviço interno do contêiner que será exposta para a máquina hospedeira que o executa
  • COPY: copia arquivos do máquina hospedeira para dentro do contêiner
  • CMD: comando que é executado quando o contêiner inicia sua execução

Para mais informações, consulte a referência do Dockerfile.

Criando a imagem

Dentro da pasta contendo o Dockerfile, execute o comando de build:

$ docker build -t nginx-treinamento .

Em caso de sucesso, você verá algo como:

Successfully built a7ebfbdaa6ec
Successfully tagged nginx-treinamento:latest

Executando a imagem

Execute o seguinte comando:

$ docker run \
    -it \
    -d \
    --name="web" \
    -p 80:80 \
    --restart="always" \
    nginx-treinamento

Observação: caso deseje executar o container em outra porta (Exemplo: 9090) altere a linha -p para:

  • -p 9090:80

Listando os contêiners ativos:

$ docker ps

Você verá algo como:

CONTAINER_ID IMAGE COMMAND CREATED STATUS PORTS
14a72c95d77b nginx-treinamento "nginx -g 'daemon ..." 1 minute ago Up 0.0.0.0:80->80

Para testar, acesse pelo navegador o endereço: http://localhost:9595/.

Removendo o contêiner

Após finalizar os testes, remova o contêiner:

$ docker rm -f web