Dockerfile é um arquivo de texto simples que contém todos os comandos que o usuário pode chamar na linha de comando para montar ou construir uma imagem. Com a ajuda do docker build, você pode automatizar facilmente a compilação que executa vários comandos definidos no dockerfile em sucessão.
Por exemplo, você deseja baixar a imagem do docker do hub do docker para suas necessidades de desenvolvimento específicas. Então, você deseja atualizar a imagem, instalar alguns pacotes para o seu processo de desenvolvimento. Neste caso, você pode criar um dockerfile, incluir todos os parâmetros para suas necessidades específicas e construir sua imagem personalizada. Depois de criar um dockerfile, você pode usá-lo repetidamente para construir a mesma imagem sem instalar manualmente todos os pacotes necessários para o seu processo de desenvolvimento.
Dockerfile Basic
Antes de trabalhar com dockerfile, é importante saber como fazer um dockerfile. Dockerfile inclui palavras-chave específicas que podem ser usadas para construir uma imagem específica. Uma breve explicação de todas as palavras-chave usadas em um dockerfile estão listadas abaixo:
- A PARTIR DE: Serve para definir a imagem base, sobre a qual iremos construir.
- ADICIONAR: É usado para adicionar arquivos ao contêiner que está sendo construído. Em termos simples, RUN é usado para executar comandos e confirmar o resultado
- CORRE: É usado para adicionar camadas à imagem de base, instalando componentes.
- CMD: É usado para executar comandos no início do contêiner. Esses comandos são executados apenas quando não há nenhum argumento especificado durante a execução do contêiner.
- PONTO DE ENTRADA: É usado para executar comandos durante o processo de inicialização do contêiner. Você deve usar um ENTRYPOINT em seu dockefile se quiser iniciar um contêiner automaticamente após construir uma imagem.
- ENV: É usado para definir variáveis de ambiente no tempo de execução do contêiner.
- EXPOR: É usado para especificar a porta de escuta para habilitar a rede em tempo de execução.
- MANUTENÇÃO: É usado para especificar o nome e id de e-mail do criador da imagem.
- DO UTILIZADOR: É usado para especificar o nome de usuário usado para executar o contêiner.
- VOLUME: É usado para permitir o acesso do contêiner ao diretório no host Docker.
- WORKDIR: É usado para especificar o caminho do comando a ser executado em tempo de execução.
- RÓTULO: É usado para adicionar rótulos à imagem do docker.
Criação do Dockerfile
Nesta seção, criaremos um dockerfile para construir uma imagem de servidor LAMP a partir da imagem base do Ubuntu.
Primeiro, você precisará criar um diretório para armazenar o dockerfile. Você pode criá-lo com o seguinte comando:
mkdir LAMPEm seguida, crie um diretório chamado Dockerfile dentro do diretório:
nano LAMP / DockerfileAdicione as seguintes linhas:
DO ubuntu: mais recenteMANUTENÇÃO Hitesh Jethva
ENV DEBIAN_FRONTEND = não interativo
EXECUTE apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "FOREGROUND"]
EXPOSE 8080
Salve e feche o arquivo quando terminar.
Criação de imagem com Dockerfile
Depois de criar o Dockerfile, você pode criar facilmente uma imagem LAMP personalizada com a ajuda do Dockerfile.
Primeiro, altere o diretório para LAMP e execute o seguinte comando para criar a imagem desse arquivo:
cd LAMPdocker build -t "lamp: Dockerfile".
O comando acima começará a baixar a imagem mais recente do Ubuntu do Docker Hub e os pacotes necessários instalados especificados no Dockerfile. Depois que a imagem for criada com sucesso, você verá a seguinte saída:
Enviando contexto de compilação para Docker daemon 2.048kBEtapa 1/6: DO ubuntu: mais recente
mais recente: puxando da biblioteca / ubuntu
54ee1f796a1e: Puxar completo
f7bfea53ad12: Extração completa
46d371e02073: Extração completa
b66c17bbf772: Extração completa
Resumo: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Status: Download da imagem mais recente para o ubuntu: mais recente
---> 4e2eef94cd6b
Etapa 2/6: MANUTENÇÃO Hitesh Jethva
---> Executando em 047977af2c2a
Removendo o recipiente intermediário 047977af2c2a
---> 1331df625c4c
Etapa 3/6: ENV DEBIAN_FRONTEND = não interativo
---> Executando em 3597152c7a1b
Removendo o recipiente intermediário 3597152c7a1b
---> 86c82c95e75d
Etapa 4/6: EXECUTE apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Removendo o recipiente intermediário 322532299fd9
---> f6897a9554f7
Etapa 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Executando em 669635bc8bcb
Removendo o recipiente intermediário 669635bc8bcb
---> e8400eb2e677
Etapa 6/6: EXPOR 8080
---> Executando em 937ae2b2d305
Removendo o recipiente intermediário 937ae2b2d305
---> 2123a857361d
2123a857361d construído com sucesso
Lâmpada identificada com sucesso: Dockerfile
Agora você pode listar sua imagem recém-construída executando o seguinte comando:
imagens dockerVocê deve ver a seguinte saída:
TAG DE REPOSITÓRIO ID DE IMAGEM TAMANHO CRIADOlamp Dockerfile 2123a857361d 44 segundos atrás 520 MB
ubuntu mais recente 4e2eef94cd6b 8 dias atrás 73.9 MB
Agora, você tem uma imagem de servidor LAMP personalizada em suas mãos. Você também pode ver o histórico de cada comando com o seguinte comando:
lâmpada do histórico do docker: DockerfileVocê deve ver a seguinte saída:
IMAGEM CRIADA POR COMENTÁRIO DE TAMANHO2123a857361d 16 minutos atrás / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 16 minutos atrás / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 16 minutos atrás / bin / sh -c apt-get update -y && apt-get inst… 446 MB
86c82c95e75d 17 minutos atrás / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c 17 minutos atrás / bin / sh -c # (nop) MANUTENÇÃO Hitesh Jethva 0B
4e2eef94cd6b 8 dias atrás / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Criação de um contêiner a partir da imagem LAMP
Agora, você pode executar um contêiner a partir de sua imagem usando o seguinte comando:
docker run -dit lamp: DockerfileDepois que o contêiner for iniciado, você verá a seguinte saída:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Você pode verificar o contêiner em execução usando o seguinte comando:
docker psVocê deve obter a seguinte saída:
COMANDO DE IMAGEM DE ID DE CONTÊINER CRIADO NOMES DE PORTOS DE STATUSc14794784eb2 lamp: Dockerfile "apachectl -D FOREGR…" 2 minutos atrás Acima 2 minutos 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Conclusão
Neste guia, você aprendeu o que é Dockerfile e como construir uma imagem docker com Dockerfile. Isso é muito útil para criar suas imagens personalizadas em vez de fazer alterações em uma imagem extraída.