Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Blogosfera d...
Tela cheia Sugerir um artigo

Criando imagens Docker (Dockerfile)

27 de Março de 2015, 8:09 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 321 vezes

No artigo anterior sobre Docker, eu falei sobre como modificar uma imagem docker usando COMMIT, mas propositalmente não comentei que essa não é a melhor prática :) Evitei tocar nesse assunto para não frustrar o aprendizado, pois é necessário aprender como funciona o COMMIT, com DIFF e afins.

A melhor forma de modificar uma imagem Docker é recriando ela, ou seja, modificando seu Dockerfile, ou criando um Dockerfile com a imagem escolhida como base e nesse artigo falaremos sobre tudo isso.

Dockerfile

Dockerfile é um arquivo, que contém um conjunto de instruções necessárias para se criar uma imagem Docker, ou seja, com posse do Dockerfile de uma determinada imagem, basta modificar o que deseja e recriar a imagem “do zero”, isso pode demorar um pouco mais, mas essa imagem será muito mais “enxuta” e você terá controle total do seu estado, o que seria bem mais difícil no modelo de efetuar commit de um container.

Caso não tenha o Dockerfile, você pode usar uma imagem a sua escolha como base e então criar a sua imagem como uma camada acima.

Sintaxes básicas

FROM : É a imagem base. Normalmente é usada com nome de distribuição (Debian, Ubuntu e afins), pois não precisaremos criar toda estrutura, certo?

MAINTAINER : É onde se especifica o autor da imagem.

RUN : São as instruções que serão executadas para criação da imagem em questão.

ENTRYPOINT : Especifica o que o que será executado ao iniciar o container. Ele age como precedente a sintaxe CMD, ou seja, caso o ENTRYPOINT seja “top”, o CMD pode ser “-b” que nesse caso ele executaria o top em modo batch. Uma vez que o ENTRYPOINT não seja especificado, e um CMD seja usado, o ENTRYPOINT padrão é “/bin/sh -c“.

EXPOSE : Usado para informar qual porta o container docker irá “escutar”. Docker use essa informação para interconexão entre containers, ao utilizar links. EXPOSE não define qual porta será exposta para o hospedeiro ou tornar possível o acesso externo para portas do container em questão. Para expor essas portas utilize em tempo de inicialização da imagem a flag -p ou -P.

Para explicação mais exaustiva das sintaxes já explanadas e outras novas, acesse essa documentação.

Exemplo

Crie uma pasta com o comando abaixo:

# mkdir nginx

Entre nessa pasta:

# cd nginx

E então crie um arquivo chamado “Dockerfile” com o seguinte conteúdo:

FROM debian
MAINTAINER Rafael Gomes <gomex@riseup.net>
RUN apt-get update
RUN apt-get install -y nginx
ENTRYPOINT ["/usr/sbin/nginx"]
EXPOSE 80

Com esse Dockerfile, temos:

  • Uma imagem com base na imagem do Debian, ou seja, não precisamos nos preocupar com o sistema básico.
  • O autor dessa imagem sou eu :)
  • Primeiro eu atualizo a base do apt-get e então instalo o nginx.
  • Ao iniciar essa imagem ela executará o nginx automaticamente.
  • A porta exposta para possível interconexão entre containers é a porta 80.

Nesse link tem um ótimo documento explicando as boas práticas na criação de um Dockerfile.

Criando a imagem

Com o Dockerfile preenchido, execute o comando abaixo para criar sua imagem:

# docker build -t gomex/nginx .

No lugar de “gomex” coloque o seu usuário da nuvem pública do docker e no lugar de “nginx” o nome da sua imagem.

Ao terminar, pode efetuar o push para a nuvem pública e assim proporcionar a distribuição da sua imagem:

# docker push gomex/nginx

Pronto! Agora já tem sua imagem prontinha, totalmente “enxuta” e disponível para que outra pessoa possa baixar e utilizar.

Por hoje é só pessoal, logo teremos mais artigos sobre Docker. Fiquem atentos.


Fonte: http://techfree.com.br/2015/03/criando-imagens-docker-dockerfile/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.