Skip to main content

Alias | --alias, aliases | Docker Network | Docker

  • Alias | --alias, aliases | Docker Network | Docker

O que é o --alias no Docker

O --alias permite que um contêiner possua nomes alternativos de DNS dentro de uma rede Docker.
Esses nomes adicionais funcionam como hostnames internos, permitindo que outros contêineres acessem o serviço usando diferentes identificadores.

O Docker mantém um DNS interno por rede, que resolve automaticamente:

  • Nome do contêiner
  • Nome do serviço (no docker-compose)
  • Aliases configurados na rede

Isso significa que qualquer contêiner conectado à mesma rede pode acessar o serviço utilizando qualquer um desses nomes.


Quando utilizar alias

O uso de aliases é comum em cenários como:

  • Compatibilidade com aplicações legadas que esperam um hostname específico
  • Migração gradual de serviços sem alterar clientes
  • Exposição de múltiplos nomes para o mesmo serviço
  • Simulação de infraestrutura (ex: ambientes de teste)

Exemplo de cenário:


client → api
client → backend
client → service_internal

Todos os nomes podem apontar para o mesmo contêiner.


Funcionamento do DNS interno do Docker

Cada rede Docker possui um servidor DNS embutido responsável por resolver nomes de contêineres.

Fluxo simplificado:


Container A
|
| resolve: web
v
Docker DNS (network)
|
v
Container B

Regras importantes:

  • A resolução de nomes funciona somente dentro da mesma rede
  • Aliases são escopados à rede
  • Um mesmo contêiner pode ter aliases diferentes em redes diferentes

Exemplo com docker-compose

Estrutura básica

services:
app:
image: nginx
networks:
minha_rede:
aliases:
- web
- app_server

networks:
minha_rede:
driver: bridge

Neste exemplo:

  • O contêiner app recebe dois aliases
  • Outros contêineres na rede podem acessar usando:
http://web
http://app_server

Exemplo com múltiplos serviços

services:
api:
image: nginx
networks:
backend:
aliases:
- backend_api
- internal_api

client:
image: curlimages/curl
command: sleep infinity
networks:
- backend

networks:
backend:
driver: bridge

O contêiner client poderá acessar o serviço api usando:

http://api
http://backend_api
http://internal_api

Teste dentro do contêiner:

docker exec -it client sh
curl http://backend_api

Exemplo utilizando docker network connect

Também é possível adicionar aliases ao conectar um contêiner manualmente a uma rede.

docker network connect \
--alias web \
--alias api_internal \
minha_rede container_app

Agora o contêiner poderá ser acessado como:

web
api_internal

Diferença entre nome do contêiner, service name e alias

TipoDescriçãoExemplo
Container NameNome real do contêinerapp_container
Service NameNome do serviço no composeapp
AliasNome adicional dentro da redeweb

Todos podem resolver para o mesmo contêiner dependendo da configuração da rede.


Escopo de rede

Aliases são válidos apenas na rede onde foram definidos.

Exemplo:

services:
app:
image: nginx
networks:
frontend:
aliases:
- web
backend:
aliases:
- internal_api

Resultado:

RedeNome acessível
frontendweb
backendinternal_api

Cada rede terá sua própria resolução DNS.


Boas práticas

  • Utilize aliases quando o nome do serviço não deve ser exposto diretamente
  • Prefira aliases para compatibilidade entre ambientes
  • Evite criar muitos aliases desnecessários
  • Documente aliases usados por aplicações dependentes