Ir para o conteúdo
  • Materiais
    • Ebook – Ubuntu Linux
    • Ebook – Como Usar Virtualbox
    • Ebook – Kali Linux – Guia de Instalação e Configuração de um Ambiente para Hacking
    • Ebook – O Guia Rápido Sobre Servidor WEB com Apache
    • Ebook – Como Criar Um Servidor Proxy Com Squid
    • Ebook – Apache vs Nginx – O confronto entre os dois servidores web mais utilizados no Linux
    • Ebook – Firewall Com pfSense – Guia para Iniciantes
    • Ebook – Amazon EC2 – Como Criar Seu Primeiro Servidor Na Nuvem
    • Ebook – 10 Shell Script para ADM Linux
  • Sobre
  • Cursos
Menu
  • Materiais
    • Ebook – Ubuntu Linux
    • Ebook – Como Usar Virtualbox
    • Ebook – Kali Linux – Guia de Instalação e Configuração de um Ambiente para Hacking
    • Ebook – O Guia Rápido Sobre Servidor WEB com Apache
    • Ebook – Como Criar Um Servidor Proxy Com Squid
    • Ebook – Apache vs Nginx – O confronto entre os dois servidores web mais utilizados no Linux
    • Ebook – Firewall Com pfSense – Guia para Iniciantes
    • Ebook – Amazon EC2 – Como Criar Seu Primeiro Servidor Na Nuvem
    • Ebook – 10 Shell Script para ADM Linux
  • Sobre
  • Cursos

Dockerfile: Exemplos Completos Para Você Administrar Aplicações em Contêineres

  • pedrodelfino

Compartilhe este post

Share on facebook
Share on linkedin
Share on twitter
Share on email

Dominar a configuração do Dockerfile é essencial para você já enfrentou desafios ao criar e gerenciar contêineres Docker para aplicações de alta demanda.

Ou talvez precisou otimizar seus Dockerfiles para garantir desempenho e eficiência?

Sim eu já passei por situações onde aplicações críticas rodando em contêineres Docker enfrentavam problemas de desempenho e estabilidade.

Utilizando Dockerfile de forma eficiente, consegui resolver esses problemas e garantir que as aplicações funcionassem sem interrupções.

Neste guia, vou compartilhar uma lista abrangente de comandos e exemplos mais utilizados em Dockerfile, focados na administração de sistemas em contêineres.

Este artigo é ideal para administradores de sistemas e desenvolvedores que desejam melhorar suas habilidades e otimizar suas aplicações Docker.

2. Resolver Problemas com Dockerfile

Lembro-me de um cliente específico que estava enfrentando problemas graves de desempenho com uma aplicação web crítica.

A aplicação não conseguia lidar com o alto volume de solicitações, causando lentidão e falhas.

Utilizando uma série de boas práticas e comandos eficientes no Dockerfile, consegui otimizar a performance, melhorar a estabilidade e garantir que a aplicação pudesse lidar com a demanda.

3. O Que é um Dockerfile?

Um Dockerfile é um script de texto simples que contém um conjunto de instruções para construir uma imagem Docker. Cada instrução em um Dockerfile cria uma camada na imagem, e o resultado final é uma imagem que pode ser usada para criar contêineres. Dockerfiles permitem automatizar a configuração de ambientes e garantem que as aplicações sejam executadas de maneira consistente.

4. Comandos Básicos do Dockerfile

4.1. FROM

O comando FROM especifica a imagem base a partir da qual a nova imagem será construída. É a primeira instrução em um Dockerfile.

FROM ubuntu:20.04

4.2. RUN

O comando RUN é usado para executar comandos durante a construção da imagem. Cada execução do RUN cria uma nova camada na imagem.

RUN apt-get update && apt-get install -y python3

4.3. CMD

O comando CMD fornece um comando padrão para ser executado quando um contêiner é iniciado a partir da imagem. Se vários comandos CMD forem especificados, apenas o último será considerado.

CMD ["python3", "app.py"]

4.4. LABEL

O comando LABEL adiciona metadados à imagem, como informações de versão ou mantenedor.

LABEL version="1.0"
LABEL description="Minha aplicação Python"

4.5. MAINTAINER

O comando MAINTAINER é usado para especificar o autor ou mantenedor da imagem. No entanto, foi substituído pelo comando LABEL.

MAINTAINER Pedro Delfino

5. Comandos de Configuração e Gestão

5.1. ENV

O comando ENV define variáveis de ambiente que serão disponíveis durante a construção da imagem e a execução do contêiner.

ENV APP_HOME /usr/src/app

5.2. ADD

O comando ADD copia arquivos e diretórios para o sistema de arquivos do contêiner e pode extrair arquivos compactados.

ADD app.tar.gz /usr/src/app

5.3. COPY

O comando COPY copia arquivos e diretórios para o sistema de arquivos do contêiner. É similar ao ADD, mas não lida com arquivos compactados.

COPY . /usr/src/app

5.4. WORKDIR

O comando WORKDIR define o diretório de trabalho para qualquer comando RUN, CMD, ENTRYPOINT, COPY e ADD subsequentes.

WORKDIR /usr/src/app

5.5. VOLUME

O comando VOLUME cria um ponto de montagem e compartilha dados entre o contêiner e o host ou outros contêineres.

VOLUME ["/data"]

6. Comandos de Exposição e Execução

6.1. EXPOSE

O comando EXPOSE informa ao Docker que o contêiner escutará na porta especificada em tempo de execução.

EXPOSE 8080

6.2. ENTRYPOINT

O comando ENTRYPOINT configura um contêiner para ser executado como um executável. Diferente do CMD, ele não pode ser substituído na linha de comando, a menos que seja especificado com o --entrypoint.

ENTRYPOINT ["python3", "app.py"]

6.3. USER

O comando USER define o usuário sob o qual o contêiner será executado.

USER nonrootuser

6.4. ARG

O comando ARG define variáveis que podem ser passadas durante a construção da imagem.

ARG APP_VERSION=1.0

6.5. ONBUILD

O comando ONBUILD adiciona instruções de gatilho à imagem. Essas instruções só serão executadas quando uma imagem baseada nela for construída.

ONBUILD RUN echo "Imagem filha construída!"

7. Práticas Recomendadas ao Escrever Dockerfiles

7.1. Minimização de Imagens

Utilize imagens base pequenas e minimize a instalação de pacotes para reduzir o tamanho da imagem.

7.2. Ordenação de Comandos

Ordene os comandos para maximizar o uso do cache de construção do Docker.

7.3. Manutenção de Limpeza

Remova arquivos temporários e limpe caches após a instalação de pacotes.

7.4. Utilização de Imagens Multi-stage

Use a técnica de multi-stage builds para criar imagens menores e mais seguras.

8. Exemplos de Dockerfile para Diferentes Aplicações

8.1. Dockerfile para Aplicações Node.js

FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

8.2. Dockerfile para Aplicações Python

FROM python:3.8
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]

8.3. Dockerfile para Aplicações Java

FROM openjdk:11
WORKDIR /usr/src/app
COPY . .
RUN javac App.java
EXPOSE 8080
CMD ["java", "App"]

8.4. Dockerfile para Aplicações PHP

FROM php:7.4-apache
COPY

 src/ /var/www/html/
EXPOSE 80

8.5. Dockerfile para Bancos de Dados

FROM mysql:5.7
ENV MYSQL_ROOT_PASSWORD=my-secret-pw
COPY ./init.sql /docker-entrypoint-initdb.d/
EXPOSE 3306

9. Ferramentas e Extensões para Dockerfile

9.1. Docker Compose

O Docker Compose é uma ferramenta para definir e executar aplicações Docker multi-contêiner. Use o docker-compose.yml para configurar serviços, redes e volumes.

9.2. BuildKit

O BuildKit melhora o processo de construção do Docker com novos recursos, como cache de montagem e paralelismo.

9.3. Hadolint

Hadolint é uma ferramenta de linting para Dockerfiles, que verifica o arquivo em busca de erros de sintaxe e más práticas.

10. Estudos de Caso: Problemas Resolvidos na Prática

10.1. Estudo de Caso 1: Otimização de Dockerfile para Aplicações de Alta Demanda

Um cliente enfrentava problemas de desempenho com uma aplicação de alta demanda. Optimizamos o Dockerfile utilizando técnicas de multi-stage builds e minimizando o tamanho da imagem, resultando em uma performance significativamente melhorada.

10.2. Estudo de Caso 2: Utilização de Dockerfile para Ambientes de Desenvolvimento e Produção

Implementamos Dockerfiles separados para desenvolvimento e produção, garantindo que os desenvolvedores tivessem um ambiente consistente e que a imagem de produção fosse otimizada e segura.

10.3. Estudo de Caso 3: Implementação de Segurança em Dockerfile

Para aumentar a segurança, configuramos o Dockerfile para executar o contêiner com um usuário não-root e adicionamos perfis AppArmor, garantindo um ambiente mais seguro para a aplicação.

11. Conclusão

Dominar os comandos e práticas recomendadas ao escrever Dockerfiles é essencial para qualquer administrador de sistemas que trabalha com contêineres. Este guia abrange os comandos e exemplos mais utilizados, além de práticas recomendadas para garantir que suas aplicações Docker sejam executadas de forma eficiente e segura.

Espero que este guia tenha sido útil! Se tiver mais dúvidas ou sugestões, sinta-se à vontade para compartilhar. Forte abraço!

Pedro Delfino

Compartilhe este post

Share on facebook
Share on linkedin
Share on twitter
Share on email
PrevAnteriorInstalar o Docker no Ubuntu: Guia Completo
PróximoSistema Operacional Linux: Um Guia Completo para IniciantesNext

Artigos Recentes

Ext4 versus Btrfs: Qual é o Melhor Sistema de Arquivos No Linux?

Escolher o sistema de arquivos certo é crucial para a performance e confiabilidade de um sistema operacional. Entre os sistemas mais utilizados no Linux, Ext4

pedrodelfino

Sockets: Tudo o que Você Precisa Saber

Se você é um administrador de sistemas iniciante e já se perguntou como os dados são transferidos na internet, você não está sozinho. A solução

pedrodelfino
"Um dos projetos que criei já ajudou mais de 110 mil pessoas a aprender LINUX ..."
pedro Delfino
FUNDADOR DO PROFISSIONAIS LINUX

Sobre Pedro Delfino

FUNDADOR DO PROFISSIONAIS LINUX​

Eu sou Pedro Delfino que durante os últimos 18 anos estive envolvido em implantações de soluções de TI utilizando LINUX, enquanto estava á frente de uma equipe de TI.

Fundador do Profissionais Linux que hoje já conta com mais de 2100 alunos, fui o responsável por diversos projetos de sucesso, todos eu sempre foquei o resultado em primeiro lugar, ou seja, sempre quando crio uma nova solução com Linux que será implantada estou procurando um objetivo especifico.

quero acessar agora

MENU

  • Cursos
  • Materiais
  • Blog
  • Contato

redes SOCIAIS

Facebook-f Instagram

Aprenda a dominar o Linux de uma vez por todas

QUERO MINHA CÓPIA GRÁTIS

Aprenda a dominar o Linux de uma vez por todas