# Configurer le DNS d'un conteneur Docker

Si Docker s'exécute sur une machine virtuelle (Docker for Mac, Docker for Windows), la configuration par défaut du DNS du conteneur est différente de celle des machines physiques. Dans ce cas, vous devez configurer le DNS dans le fichier de configuration de Docker fourni avec le Moteur distant Gen2.

## Procédure

1. Accédez au répertoire d'installation du Moteur distant Gen2 et ouvrez le fichier suivant pour le modifier :

   default/docker-compose.yml si vous utilisez le moteur dans les régions AWS USA, AWS Europe, AWS Asie-Pacifique ou Azure.

   eap/docker-compose.yml si vous utilisez le moteur au sein du programme Early Adopter Program.
2. Pour configurer :
   1. la résolution DNS dynamique, ajoutez des serveurs nommé dans une section dns ou ajouter des suffixes dans une section dns\_search. Les suffixes seront automatiquement ajoutés aux noms d'hôte pour la résolution DNS. Les entrées répertoriées dans la section dns\_search s'afficheront dans le fichier /etc/resolv.conf de chaque conteneur.
      ## Exemple
      ```
      dns:
        - 8.8.8.8
        - 9.9.9.9
      dns_search:
        - dc1.example.com
        - dc2.example.com
      ```
   2. la résolution DNS statique, ajoutez des entrées dans une section extra\_hosts. Ces entrées seront automatiquement ajoutées au fichier /etc/hosts de chaque conteneur.

      Note InformationsRemarque : Deux conteneurs Moteur distant Gen2, livy et component-server, nécessitent des connexions externes, par conséquent la configuration DNS peut avoir besoin des deux.
      ## Exemple
      ```
      extra_hosts:
       - "somehost:162.242.195.82"
       - "otherhost:50.31.209.229"
      ```
3. Sauvegardez le fichier.

## Résultats

Votre docker-compose.yml doit ressembler à cela :

```
version: '3.6'

networks: ...

volumes:...

services:
 ...
 component-server:
  image: ${COMPONENTS_IMG}
  ...
  labels:...
  dns:
  - 8.8.8.8
  - 9.9.9.9
  dns_search:
  - dc1.example.com
  - dc2.example.com  
  extra_hosts:
  - "somehost:162.242.195.82"
  - "otherhost:50.31.209.229"
...
```

Pour plus d'informations à ce sujet, consultez [la documentation Docker](https://docs.docker.com/compose/compose-file/).

En savoir plus :

Des services de Moteur distant Gen2 s'exécutent comme des conteneurs Docker sur un réseau de ponts définis par l'utilisateur ou l'utilisatrice appelé remote-engine\_default.

Note InformationsConseil : Vous pouvez vérifier la présence de ces ponts définis par l'utilisateur ou l'utilisatrice en exécutant la commande docker network ls.

Comme pour la version Docker 1.10, les réseaux de ponts définis par l'utilisateur ou l'utilisatrice intègrent un serveur DNS. Consultez la documentation Docker concernant [les serveurs DNS embarqués](https://docs.docker.com/v17.09/engine/userguide/networking/#embedded-dns-server) et [les réseaux définis par l'utilisateur ou l'utilisatrice](https://docs.docker.com/v17.09/engine/userguide/networking/configure-dns/) pour plus d'informations.

Un certain nombre d'options spécifiées au moment de l'exécution peuvent affecter la résolution du service DNS pour le conteneur Docker. En l'absence de ces options, Docker utilise par défaut /etc/resolv.conf de la machine hôte. La machine hôte est celle où le démon de Docker s'exécute. Parfois, Docker peut ne pas s'exécuter sur la machine physique mais plutôt sur une machine virtuelle. C'est pourquoi vous devrez configurer manuellement le DNS du conteneur Docker dans le fichier docker-compose.yml.