Criando Imagens com Dockerfile

11 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 11 11 Flares ×


O objetivo desse post é mostrar como se torna possível a criação de uma imagem personalizada através do Dockerfile!

Primeiramente, o que é um Dockerfile

O Dockerfile é um arquivo onde são passadas instruções(Comandos, variáveis de ambiente e etc) com intuito de personalizar um container, e transformando o mesmo em uma imagem docker. É possível criar um Dockerfile sem dificultar o entendimento e proporcionando uma grande curva de aprendizagem.

O que é uma Imagem Docker na prática.

Uma imagem pode ser considerada como um template, ou seja, um modelo que pode ser melhorado ou incrementado conforme a necessidade. Nesse post, pegaremos como imagem base o Debian e à partir dele executaremos uma sequência de comandos:

– apt-get update

– apt-get install nginx -y

O interessante é que uma imagem que até então era simples, apenas Debian, agora se tornou Debian + Nginx! E quando você criar um container a partir dessa imagem ele já terá instalado o seu servidor web, em outras palavras, criamos um container pronto para deploy.

O próprio Docker mantém o seu repositório chamado “Docker Hub”, lá existem várias imagens disponíveis para download, por exemplo se você quiser uma imagem Docker do wordpress, com o comando “docker pull wordpress” você baixa a ultima versão dessa imagem. E a partir de então você já pode criar um container com o wordpress totalmente funcional. E para validar que a mesma está disponível localmente, você pode executar “docker images”.

Como exemplo prático, vamos criar um diretório chamado “/root/Dockerfiles”.

Para segmentar melhor nossas imagens, vamos criar um sub-diretório chamado “web” e entrar nele.

Feito isso, podemos criar nosso Dockerfile.

Dentro do arquivo conforme dito acima, passaremos as instruções para instalação do nosso Nginx.

Explicando o que são cada uma dessas Tags:

FROM – A imagem que será usada como base.

MAINTAINER – Quem mantém a imagem.

RUN – Comandos que serão executados.

ENV– Tag para definir variáveis de ambiente.

Caso você queira conhecer todas as Tags, deixarei o link 😉

Bom, após adicionar tudo isso no arquivo, podemos salvar e sair. (:wq!)

Para fazer o build da nossa imagem usaremos o comando “docker build” dentro do diretório que contem o nosso Dockerfile, e passaremos o parâmetro “-t” para adicionar um nome e a versão da nossa imagem (caso você não passe a versão, ele atribuirá “latest”).

Após esse comando ele mostrará todos os logs de instalação, e na ultima linha, caso não haja nenhum erro aparecerá “Successfully built <ID>” e nossa imagem terá sido criada 😉

Para validar, podemos executar “docker images”

E para criar um container usando nossa imagem, é bem simples.

Dentro do nosso container, para validar que o nginx está de fato instalado, podemos listar todos os pacotes fazendo um filtro pelo nginx.

Para iniciar o serviço do nginx.

Pronto ! Temos o nginx rodando

Vamos confirmar que ele está ouvindo na porta 80.

Em breve farei um post falando de docker compose, e como podemos criar múltiplos containers e ligá-los.

Conclusão

É bem simples criar uma imagem através do dockerfile e as tags nos permite criar e versionar nossos templates, facilitando e melhorando cada vez mais o build de nossas aplicações. Por isso espero que este post lhe seja útil e que te ajude a compreender de forma fácil como funciona o dockerfile.

Mais informações sobre o dockerfile e boas práticas podem ser obtidas diretamente em sua documentação oficial:

Boas Práticas

Documentação Oficial

Edgar da Silva Costa Filho é um sysadmin apaixonado por Linux, com foco na cultura DevOps, Formado em Redes de Computadores pela FIAP. Com 4 anos de experiência profissional em Tecnologia da Informação, atualmente atuando com desenvolvimento em python, infra ágil(Docker, Puppet, Ansible, Git, Jenkins e Rundeck), NoSQL (MongoDB) e também atuando como instrutor, ministrando cursos de Linux e suas mais diversas tecnologias, capacitando equipes de TI em sistemas Linux e soluções Open Source.

edgarsilva948

Edgar da Silva Costa Filho é um sysadmin apaixonado por Linux, com foco na cultura DevOps, Formado em Redes de Computadores pela FIAP. Com 4 anos de experiência profissional em Tecnologia da Informação, atualmente atuando com desenvolvimento em python, infra ágil(Docker, Puppet, Ansible, Git, Jenkins e Rundeck), NoSQL (MongoDB) e também atuando como instrutor, ministrando cursos de Linux e suas mais diversas tecnologias, capacitando equipes de TI em sistemas Linux e soluções Open Source.