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