\newpage

Lier les conteneurs
===================

En plus de vouloir partager des répertoires entre deux conteneurs, il est
souvent nécessaire de partager des ports.

Pour automatiser le partage d'informations sur les IP et ports exposés, la
commande `run` possède l'option `--link` qui permet de définir dans les
variables d'environnement du conteneur que l'on va lancer.

Le détail des variables ajoutées dans cette situation est disponible dans
[la documentation de Docker](https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/#environment-variables).

On utilise généralement cette liaison pour fournir au conteneur hébergeant un
site web dynamique l'IP et le port où trouver la base de données :

```
docker run -e MYSQL_ROOT_PASSWORD=mysecretpassword -d --name db1 mysql
docker run --link db1 my_nginx
```

## Ambasador

Afin d'abstraire le plus possible l'infrastructure sous-jacente et d'autoriser
les migrations de conteneurs, on utilise le modèle *ambassador*.

On lancera systématiquement un conteneur entre deux conteneurs que l'on veut
lier : l'ambassadeur. Celui-ci s'occupera de router correctement le trafic. En
cas de changement de route (si l'un des conteneurs change de machine hôte par
exemple), on a simplement à redémarrer l'ambassadeur plutôt que le conteneur
principal.

La documentation officielle pour ce modèle est disponible à
<https://docs.docker.com/engine/admin/ambassador_pattern_linking/>.
