8.1 Tagging no Docker
Tagging no Docker é o processo de atribuir uma tag a uma imagem que facilita o gerenciamento de versões. Isso torna o deployment e a atualização de aplicações mais convenientes e administráveis. Nessa aula, vamos explorar em detalhes o que são as tags, como usá-las e quais recomendações podem te ajudar a trabalhar com elas de forma mais eficiente.
Tag no Docker — é uma marca que permite identificar uma versão específica de uma imagem. Tags facilitam o acompanhamento de mudanças e ajudam a selecionar as versões certas para diferentes ambientes, como desenvolvimento, teste e produção.
Conceitos principais sobre tags:
- Unicidade: a tag identifica de forma única uma versão específica de uma imagem.
- Versionamento: com as tags, você pode marcar versões das imagens, como v1.0, v2.0, latest.
- Flexibilidade: tags são usadas para criar imagens correspondentes a estágios específicos de desenvolvimento, como
beta,stable,prod.
8.2 Como usar tags
1. Atribuição de tags ao construir uma imagem
Você pode atribuir uma tag à imagem ao construí-la usando o parâmetro -t do comando docker build.
Exemplo:
Neste exemplo, a imagem recebe o nome myapp e a tag 1.0.
docker build -t myapp:1.0 .
2. Atribuir tags adicionais a uma imagem existente
Você pode adicionar tags a uma imagem existente usando o comando docker tag.
Exemplo:
Este exemplo atribui uma tag adicional latest à imagem myapp:1.0.
docker tag myapp:1.0 myapp:latest
3. Usar tags ao iniciar containers
Quando você inicia um container, pode especificar uma tag específica da imagem que deseja usar.
Exemplo:
Este exemplo inicia um container baseado na imagem myapp com a tag 1.0.
docker run -d myapp:1.0
8.3 Prática de tagueamento
Usando versionamento semântico
Versionamento semântico (Semantic Versioning) é uma prática padrão de atribuição de versões que ajuda a entender o nível de mudanças na imagem.
Formato do versionamento semântico:
<major>.<minor>.<patch>
Onde:
-
major: Mudanças principais, incompatíveis com versões anteriores. -
minor: Novas funcionalidades, compatíveis com versões anteriores. -
patch: Correções de bugs e outras pequenas mudanças.
Exemplo:
docker build -t myapp:2.1.3 .
Usando labels adicionais
Labels adicionais ajudam a indicar o estado da imagem, como beta, alpha, stable ou prod.
Exemplo:
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
Atualizando tags
Ao atualizar uma imagem, é recomendável alterar as tags para facilitar o rastreamento de mudanças. A tag latest é frequentemente usada para indicar a versão mais recente da imagem.
Exemplo:
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 Exemplos de uso de tags
Exemplos de como usar tags em diferentes ambientes:
Exemplo 1: Desenvolvimento
Para desenvolvimento, geralmente são usadas imagens com tags que indicam a versão atual ou o estado de desenvolvimento, como dev.
docker build -t myapp:dev .
docker run -d myapp:dev
Exemplo 2: Testes
Nos ambientes de teste, são usadas imagens com tags que indicam versões específicas ou estados, como beta.
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
Exemplo 3: Produção
Em ambientes de produção, é importante usar versões estáveis e testadas das imagens, identificadas pelas tags stable, prod, ou versões semânticas, como 1.1.0-stable.
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 Melhores práticas
1. Sempre use versionamento semântico
Siga o versionamento semântico para todas as imagens. Isso ajuda a distinguir claramente os níveis de alterações e facilita o gerenciamento de versões.
2. Use tags claras e significativas
Use tags que claramente reflitam o estado ou objetivo da imagem (por exemplo, beta, stable, prod).
3. Evite usar latest em produção
A tag latest pode ser útil para desenvolvimento e testes, mas em produção é melhor usar versões específicas para evitar alterações imprevisíveis.
4. Documente o uso das tags
Documente como e para que as tags são usadas no seu projeto. Isso ajudará a equipe a entender melhor o processo de versionamento e reduzirá a probabilidade de erros.
Exemplos de Dockerfile usando tags
Exemplo 1: Criando e atribuindo tags
# Dockerfile para versão 1.0.0
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Comandos para build e tag
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
Exemplo 2: Atualizando a imagem e atribuindo tags
# Dockerfile para versão 1.1.0 com nova funcionalidade
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]
Comandos para build e tag
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION