Pour faire suite au précédent article, je voulais utiliser la fonctionnalité du link qui modifie le /etc/hosts du conteneur parent pour ajouter le nom et l’ip du conteneur fils. Mais cette fonctionnalité est arrivée avec docker 0.11.
Si vous êtes comme moi sous ubuntu 14.04, mon premier réflmexe a été comme indiqué dans la documentation, d’installer docker à partir d’un des dépôts d’ubuntu:
1 2 3 4 5 |
$ sudo apt-get update $ sudo apt-get install docker.io $ sudo apt-cache madison docker.io docker.io | 0.9.1~dfsg1-2 | http://fr.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages docker.io | 0.9.1~dfsg1-2 | http://fr.archive.ubuntu.com/ubuntu/ trusty/universe Sources |
Or dans ce dépôt la version ne suit pas les différentes releases du projet.
Si vous voulez mettre à jour docker dans une version plus récente (1.0.0 aujourd’hui), voila ce qu’il faut faire:
1 2 3 4 |
sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -" sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\ > /etc/apt/sources.list.d/docker.list" $ sudo apt-get update $ sudo apt-get install lxc-docker |
Ce qui nous donne une version :
1 2 |
$ sudo apt-cache madison lxc-docker lxc-docker | 1.0.0 | http://get.docker.io/ubuntu/ docker/main amd64 Packages |
On peut donc maintenant vérifier que la fonctionnalité est bien présente:
1 2 3 4 5 6 7 8 9 10 11 12 |
pc:~/session-webapp$ ./run_redis-server.sh 85c5a0a51fe3df1dcb678b6bccbee7c9bc8db54232c100be03e1b4aa22e49050 pc:~/session-webapp$ docker run -i -t --link redis:redis dockerfile/ubuntu /bin/bash [ root@c9cee8eddad7:~ ]$ more /etc/hosts 172.17.0.3 c9cee8eddad7 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 redis |
J’ai lancé le serveur redis et l’ai linké à un conteneur de test. On voit bien que dans le /etc/hosts, l’ip du conteneur redis est ajouté. Dans le prochain article, nous allons donc pouvoir lié la datasource et les serveurs applicatifs sans avoir a connaitre à l’avance l’ip de la datasource.