Isso deve ser o que --link
é para , pelo menos para a parte hostname.
Com docker 1.10 e PR 19242 , isso seria:
docker network create --net-alias=[]: Add network-scoped alias for the container
(veja a última seção abaixo)
Isso é o que Atualizando os/etc/hosts
detalhes do arquivo
Além das variáveis de ambiente, o Docker adiciona uma entrada de host para o contêiner de origem ao /etc/hosts
arquivo.
Por exemplo, inicie um servidor LDAP:
docker run -t --name openldap -d -p 389:389 larrycai/openldap
E defina uma imagem para testar esse servidor LDAP:
FROM ubuntu
RUN apt-get -y install ldap-utils
RUN touch /root/.bash_aliases
RUN echo "alias lds='ldapsearch -H ldap://internalopenldap -LL -b
ou=Users,dc=openstack,dc=org -D cn=admin,dc=openstack,dc=org -w
password'" > /root/.bash_aliases
ENTRYPOINT bash
Você pode expor o ' openldap
' contêiner como ' internalopenldap
' dentro da imagem de teste com --link:
docker run -it --rm --name ldp --link openldap:internalopenldap ldaptest
Então, se você digitar 'lds', esse alias funcionará:
ldapsearch -H ldap://internalopenldap ...
Isso iria devolver as pessoas. O significado internalopenldap
é alcançado corretamente a partir da ldaptest
imagem.
Obviamente, o docker 1.7 será adicionado libnetwork
, o que fornece uma implementação Go nativa para conectar contêineres. Veja a postagem do blog .
Introduziu uma arquitetura mais completa, com o Container Network Model (CNM)
Isso atualizará a Docker CLI com novos comandos “network” e documentará como o -net
sinalizador “ ” é usado para atribuir contêineres às redes.
docker 1.10 tem um novo alias com escopo de rede da seção , agora oficialmente documentado emnetwork connect
:
Embora os links forneçam resolução de nome privada localizada dentro de um contêiner, o alias com escopo de rede fornece uma maneira de um contêiner ser descoberto por um nome alternativo por qualquer outro contêiner no escopo de uma rede específica.
Ao contrário do alias de link, que é definido pelo consumidor de um serviço, o alias com escopo de rede é definido pelo contêiner que está oferecendo o serviço à rede.
Continuando com o exemplo acima, crie outro contêiner isolated_nw
com um alias de rede.
$ docker run --net=isolated_nw -itd --name=container6 -alias app busybox
8ebe6767c1e0361f27433090060b33200aac054a68476c3be87ef4005eb1df17
--alias=[]
Adicionar alias com escopo de rede para o contêiner
Você pode usar a --link
opção de vincular outro contêiner com um alias preferido
Você pode pausar, reiniciar e interromper os contêineres que estão conectados a uma rede. Os contêineres pausados permanecem conectados e podem ser revelados por uma inspeção de rede. Quando o contêiner é interrompido, ele não aparece na rede até que você o reinicie.
Se especificado, o (s) endereço (s) IP do contêiner são reaplicados quando um contêiner interrompido é reiniciado. Se o endereço IP não estiver mais disponível, o contêiner falhará ao iniciar.
Uma maneira de garantir que o endereço IP está disponível é especificar um --ip-range
ao criar a rede e escolher o (s) endereço (s) IP estático (s) fora desse intervalo. Isso garante que o endereço IP não seja fornecido a outro contêiner enquanto esse contêiner não estiver na rede.
$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network
$ docker network connect --ip 172.20.128.2 multi-host-network container2
$ docker network connect --link container1:c1 multi-host-network container2