DOCKER - 5 7 Solution Exercice Bind Mounts
Bonjour à tous et bienvenue dans ce cours d’introduction à Docker.
Dans cette leçon, vous allez apprendre à utiliser et jouer avec le DNS et son impact sur les conteneurs dans les réseaux personnalisés et les réseaux par défaut.
Nous verrons rapidement à quel point il est important d'avoir un bon DNS, car vous ne pouvez pas vous contenter des adresses IP dans les conteneurs, tellement les choses sont dynamiques. Nous examinerons les différences entre les réseaux par défaut et les réseaux personnalisés en ce qui concerne la manière dont ils traitent le DNS. Nous verrons ensuite l'option --link pour container run afin d'activer le DNS sur le réseau bridge par défaut.
Il y a une dernière chose qui est cruciale pour tous ces conteneurs et réseaux virtuels et leur communication mutuelle; et c'est le nommage. Parce que dans le monde des conteneurs qui se lancent et disparaissent sans cesse, se déplacent, s’agrandissent et se rétrécissent, nous ne pouvons pas simplement compter sur les adresses IP pour communiquer d'une chose à une autre. Parce que nous ne pouvons pas supposer d’une minute à une autre que les adresses IP seront même les mêmes.
Le conteneur peut partir ou il peut échouer, puis Docker le ramène ailleurs.
Tout cela est trop dynamique et trop compliqué pour y faire face.
Il s’avère donc qu’il existe une solution intégrée, à ce problème, à savoir le nommage DNS. Docker utilise les noms de conteneur comme l’équivalent d’un nom d’hôte pour que les conteneurs communiquent entre eux.
Maintenant, si vous vous rappelez, nous venions d'avoir deux conteneurs en cours d'exécution ... docker container ls
New_Nginx était sur un nouveau réseau, appelé my_app_net.
Docker network inspect my_app_net
Comme j'ai créé ce nouveau réseau, qui n'est pas le réseau pont par défaut, une nouvelle fonctionnalité spéciale, à savoir la résolution DNS automatique pour tous les conteneurs de ce réseau virtuel, est fournie, à partir de tous les autres conteneurs de ce réseau virtuel et de leurs noms.
Si je créer un deuxième conteneur sur ce réseau virtuel, ils pourront se trouver, quelle que soit l'adresse IP, avec leurs noms de conteneur.
Essayons donc ceci:
Docker container un –d --name my_nginx --network my_app_net nginx
(et nous l'appellerons my nginx ... et nous allons spécifier le réseau my_app_net et nginx).
Maintenant, si nous regardons ce réseau, docker network inspect my_app_net, nous devrions voir 2 conteneurs; et, si je fais un docker container exec –it , à partir du nouveau conteneur que je viens de créer my_nginx - Et nous faisons un ping vers new_nginx, vous remarquerez que la résolution DNS fonctionne. Cela rend très facile pour vous d'avoir un conteneur et vous devez définir un fichier de configuration avec lequel communiquer, disons que peut-être le serveur PHP communiquera avec le serveur MySQL. Ctrl-c, et vous verrez que cela fonctionne aussi dans l'autre sens.
docker container exec –it new_nginx ping my_nginx
Si je pars du conteneur new_nginx et que je tente d’envoyer un ping à my_ngnix, vous constaterez que la résolution fonctionne dans les deux sens.
Et c’est ce qui résout un énorme problème lorsque vous fabriquez des conteneurs, car vous ne pouvez pas prédire combien de temps ils dureront et où ils pourraient être dans une minute à partir de maintenant dans une conception de production où vous avez une multitude de Serveurs Docker Swarm.
Cela peut donc ne pas beaucoup changer sur votre machine localement, mais si vous arrêtez 3 ou 4 conteneurs, puis que vous démarrez les mêmes conteneurs et dans un ordre différent, ils n'auront peut-être pas la même adresse IP. Mais leurs noms d'hôte, ou leurs noms de conteneur, seront toujours les mêmes.
Et vous pouvez donc compter sur ceux ci.
Maintenant, si nous faisons un docker network ls, le réseau bridge par défaut présente un inconvénient ici.
Le serveur DNS n'est pas intégré par défaut. Donc, vous pouvez utiliser le --link.
Ainsi, lorsque vous créez un conteneur, docker container create --help, vous remarquerez qu'il existe une option link et que vous pouvez en fait spécifier des liens manuels entre les conteneurs de ce réseau bridge par défaut.
Mais en réalité, il est beaucoup plus facile de créer un nouveau réseau pour vos applications, de sorte que vous n’ayez pas à le faire à chaque fois.
Et dans une section future, lorsque nous parlerons de Docker Compose, vous verrez comme cela devient encore plus facile, car Compose créera automatiquement de nouveaux réseaux virtuels à chaque fois que vous créerez une application.
La communication entre vos conteneurs devient encore plus facile.
Pour récapituler rapidement, nous avons expliqué dans ce cours que les conteneurs ne pouvaient pas, ou ne devraient pas, compter sur les adresses IP pour se parler, car ils ne pouvaient tout simplement pas si fier.
Et que le DNS est vraiment la norme en ce qui concerne la manière dont nous effectuons l'intercommunication entre des
conteneurs sur le même hôte et entre des hôtes.
Il est donc recommandé de toujours créer des réseaux personnalisés, car c'est plus simple que de faire un --link tout le temps.
C’est tout pour cette vidéo, mais je vous dis à bientôt pour la prochaine.