Em meu docker-compose.yml
arquivo, tenho o seguinte. No entanto, o contêiner não coleta o valor do nome do host. Alguma ideia?
dns:
image: phensley/docker-dns
hostname: affy
domainname: affy.com
volumes:
- /var/run/docker.sock:/docker.sock
Quando eu verifico o nome do host no contêiner, ele não pega affy
.
docker
docker-compose
David Medinets
fonte
fonte
Respostas:
A partir da versão 3 do docker-compose , você pode apenas usar um
hostname
campo:fonte
Isso parece funcionar corretamente. Se eu colocar sua configuração em um arquivo:
E então traga as coisas à tona:
E então verifique o nome do host dentro do contêiner, tudo parece estar bem:
fonte
hostname
edomainname
sãodocker-compose.yml
opções válidas . Atualização: acabei de testar, ainda parece funcionar bem (docker-compose versão 1.4.2, docker versão 1.8.2).Descobri que o nome do host não era visível para outros contêineres durante o uso
docker run
. Este é um problema conhecido (talvez mais um recurso conhecido), com parte da discussão sendo:A maneira correta de atribuir um nome de host - em termos de rede de contêiner - é definir um alias como:
Infelizmente, isso ainda não funciona com
docker run
. A solução alternativa é atribuir um nome ao contêiner:E
alias1
pode ser executado o ping de outros contêineres.ATUALIZAÇÃO: como @grilix aponta, você deve usar
docker-compose run --use-aliases
para disponibilizar os aliases definidos.fonte
--use-aliases
comdocker-compose run
. Isso evitará a codificação do alias norun
comandoCom base na documentação do docker: https://docs.docker.com/compose/compose-file/#/command
Simplesmente coloco
hostname: <string>
em meu arquivo docker-compose.Por exemplo:
e o contêiner lb01 é selecionado
at-lb01
como o nome do host.fonte
A maneira mais simples que encontrei é apenas definir o nome do contêiner na documentação
docker-compose.yml
Ver container_name . É aplicável a docker-compose v1 +. Funciona de contêiner para contêiner, não da máquina host para o contêiner.Agora você deve conseguir acessar
affy
de outros contêineres usando o nome do contêiner. Tive que fazer isso para vários servidores redis em um ambiente de desenvolvimento.OBSERVAÇÃO A solução funciona desde que você não precise escalar. Como ambientes de desenvolvedor individuais consistentes.
fonte
Compose 3.7
única maneira de obter o nome do host do serviço de banco de dados de dentro de outro contêiner de serviço da mesma pilha foi nomear o serviço como o nome do host. O uso dahostname:
propriedade falhou. O uso do ambiente HOSTNAME = também falhou.aliases
propriedade conforme descrito nafoz
solução.container_name
ehostname
ao mesmo valor para alcançar o que precisoEu precisava girar o contêiner freeipa para ter um kdc funcionando e tive que dar a ele um nome de host, caso contrário ele não funcionaria. O que funcionou para mim foi definir a
HOSTNAME
variável env em compose:Agora está funcionando:
fonte