Prefira a rede de janela de encaixe personalizada ou o servidor de dns personalizado

3

Desejo configurar um pequeno servidor da web executando vários aplicativos da web, como o OpenProject e o GitLab, bem como o OpenLDAP para gerenciamento de usuários. Para encapsular os aplicativos únicos, o docker deve ser aplicado.

Agora li sobre várias possibilidades de como permitir que os aplicativos conversem entre si usando seus nomes de host (por exemplo, aplicativo da web para o slapd). A maioria das soluções usa servidores DNS, sendo executados no host do docker como aqui ou em um contêiner de estivador separado.

No entanto, ao ler o guia do usuário da janela de encaixe , descobri também que as redes de janelas de encaixe personalizadas também permitem a resolução de nomes entre os contêineres na rede.

Naturalmente eu preferiria a segunda abordagem usando redes docker, já que requer menos ferramentas e, portanto, configuração. No entanto, estou um pouco confuso de que maneira agora as redes docker e os servidores DNS personalizados são diferentes. Há algum detalhe que eu negligencie?

Acrescentou pequenos esclarecimentos no último parágrafo.

    
por empwilli 17.12.2015 / 15:56

1 resposta

1

Atualmente, estou fazendo algo semelhante. Eu uso o recurso de link do Docker. Ao vincular dois contêineres, você pode definir um DN no qual o contêiner vinculado está acessível. Eu pessoalmente uso docker-compose para uma configuração melhor do que apenas comandos simples. Você pode até mesmo configurar redes e dar aos contêineres acesso a isso. Mas todos os acessos acontecem sobre o docker e criam DNs, pois os IPs do contêiner podem ser alterados na reinicialização.

Como exemplo, como eu o uso para owncloud e nginx como um proxy de descarregamento SSL.

version: '2'
services:
  nginx:
    container_name: nginx_proxy
    image: nginx
    links:
      - owncloud:owncloud
    networks:
      - owncloud_web
    ports:
      - 80:80
      - 443:443
    volumes:
      - ...

owncloud:
  container_name: owncloud
  links:
    - owncloud_db:postgresql
  networks:
    - gitlab_web
  volumes:
    - ...

owncloud_db:
  container_name: owncloud_db
  image: postgres:9.4
  networks:
    - owncloud_db
  volumes:
    - ...

networks:
  owncloud_web:
  owncloud_db:

Com esse nginx pode acessar owncloud sob owncloud enquanto owncloud pode acessar seu banco de dados sob postgresql. Eu configurei redes separadas para que o nginx não possa acessar o banco de dados diretamente.

Ao usar um servidor DNS externo, você precisa saber os endereços IP dos contêineres que podem ser alterados em qualquer reinicialização. Até mesmo a sub-rede completa pode mudar. Então você tem que implementar um sistema DNS dinâmico ou esperar que o IP não mude.

Ao usar internamente do docker, você não precisa executar nenhum serviço adicional e nunca precisa depender de endereços IP.

    
por 18.03.2016 / 19:00