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
apprecebe 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
| Tipo | Descrição | Exemplo |
|---|---|---|
| Container Name | Nome real do contêiner | app_container |
| Service Name | Nome do serviço no compose | app |
| Alias | Nome adicional dentro da rede | web |
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:
| Rede | Nome acessível |
|---|---|
| frontend | web |
| backend | internal_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