‫Ce sera la première conférence où nous allons utiliser plusieurs hôtes, nœuds, instances ou ce
‫que vous voulez ... plusieurs OS. Nous allons configurer un essaim de 3
‫nœuds sur ces trois nœuds.
‫Nous ne pouvons malheureusement pas faire cette partie avec le Docker intégré sur votre machine
‫car cela ne nous fournira qu'un seul système d'exploitation. Nous avons besoin de trois systèmes d’exploitation Linux pour jouer avec ce nouvel ensemble de fonctionnalités.
‫La première option que vous allez utiliser consiste à jouer avec docker. com.
‫C'est absolument la meilleure façon de commencer.
‫Il est livré avec Docker pré-installé. Il vous faut quelques secondes pour approvisionner trois
‫machines différentes et aucun investissement de votre part n’est nécessaire. Mais cela signifie que toutes les quatre heures, tout le travail que vous avez effectué sera effacé.
‫Donc, si vous pensez que vous allez faire le reste de cette section au fil des jours, alors
‫ce n'est peut-être pas la meilleure option pour vous. Mais si vous allez vous concentrer pendant quelques heures,
‫vous pouvez certainement parcourir la plupart des trucs d'essaims à nœuds multiples, voire tous, en utilisant Play With Docker en une seule séance.
‫Docker-machine est une autre option. Vous n’avez pas encore parlé de Docker-machine, mais
‫c’est un outil en ligne de commande qui s’installe avec Docker pour Windows et Docker pour Mac.
‫Vous pouvez le télécharger pour Linux. Il s'agit en fait d'un outil d'automatisation permettant de provisionner des machines
‫virtuelles localement et sur Internet, puis de configurer automatiquement Docker pour vous.
‫Cela fonctionne par défaut avec VirtualBox, que vous pouvez installer gratuitement. Toutefois, cela signifie que si vous exécutez
‫trois machines virtuelles localement, chacune d’entre elles a probablement besoin d’un gigaoctet de RAM pour exécuter
‫beaucoup de ces exemples. Vous aurez donc besoin d'une machine avec une bonne quantité de RAM. DigitalOcean est une autre
‫option, celle que je vais utiliser par défaut pour nombre de ces démonstrations et démonstrations.
‫Je recommande simplement DigitalOcean simplement parce qu’ils ont le service le moins cher et le plus facile à
‫démarrer, et qu’ils fonctionnent entièrement sur SSD, c’est rapide et agréable. Vous pouvez en fait l'utiliser dans une configuration
‫très, très similaire à celle de la production, car vous utilisez trois machines virtuelles réelles, dans le
‫cloud, et le lancement de chaque machine virtuelle prend environ une minute.
‫Si vous pensez que cela pourrait être une option, vous pouvez utiliser mon code de parrainage
‫et les références à cette section pour obtenir votre premier 10 $ gratuitement.
‫Si vous ne prenez que quelques jours pour résoudre ce problème, vous pouvez configurer trois nœuds à 10 $ par
‫mois et les laisser en place pendant plusieurs jours ou une semaine.
‫Et cela pourrait correspondre au budget de 10 $, donc techniquement, cela ne vous coûterait rien.
‫Enfin, il existe de nombreuses façons d’installer Docker. Trois machines sur lesquelles
‫Docker est installé sont nécessaires. Vous pouvez utiliser Docker Machine.
‫Il possède des pilotes intégrés qui vous permettent de provisionner des instances Amazon, Azure ou DigitalOcean Droplets, ou des nœuds Google
‫Compute ou tout autre endroit où vous pouvez obtenir une machine virtuelle Linux. Vous pouvez simplement installer Docker à l'aide
‫d'un script automatisé. obtenir. docker. com.
‫Franchement, je préfère le get. docker. La version com uniquement parce que Docker Machine peut
‫vous faire économiser quelques étapes, en particulier pour des emplacements tels qu'Amazon et Azure qui nécessitent de provisionner un grand nombre de
‫choses différentes avant de pouvoir approvisionner uniquement une machine virtuelle. Mais vous n'allez probablement pas utiliser
‫Docker Machine en production.
‫C'est un outil permettant d'automatiser simplement les environnements de développement et de test. Il n'a jamais été réellement conçu pour configurer tous les
‫paramètres de production dont vous pourriez avoir besoin pour un essaim à plusieurs nœuds.
‫Il n'y a rien de fondamentalement faux avec cela, mais généralement obtenir. docker. com fonctionne sur toutes les
‫principales distributions Linux et ne prend pas plus de temps que d’utiliser Docker Machine lui-même.
‫Je vais vous donner un exemple très rapide montrant que l'un de ces scénarios est
‫tel que Docker est installé. Ensuite, ils seront tous très similaires dans la manière
‫dont nous créons l’essaim et rendons nos services.
‫Alors, ne pensez pas que vous devez le faire comme je le fais.
‫En réalité, nous essayons simplement de faire en sorte que les informations de Docker ramènent des informations, puis de
‫nous assurer que les trois nœuds ont un accès réseau les uns aux autres et qu'ils se trouvent sur un réseau bien connecté.
‫Donc, idéalement, ils devraient être sur le même réseau.
‫Si vous vouliez utiliser Play With Docker, vous allez simplement jouer à play-with-docker. com et cochez la case car je
‫ne suis pas un robot.
‫Et si cela vous donne l’écran CAPTCHA, suivez-le.
‫D'accord. Vous verrez que le compte à rebours est de quatre heures.
‫Mais si je clique simplement sur l'instance de création, puis deux fois de plus, cela créera très rapidement
‫trois environnements virtuels.
‫En passant, ceci utilise en fait Docker dans Docker, une technologie plutôt soignée dans
‫laquelle nous exécutons Docker dans un conteneur Docker.
‫Mais dans cette configuration avec Play With Docker, qui a été créé par d’autres capitaines de Docker et l’équipe Docker, il est vraiment
‫difficile de faire la différence.
‫Si je vais à node1, je peux déjà voir que l'information de Docker me donne la dernière version. Et si j’essayais même d’envoyer une requête ping à
‫node2, il reconnaît les noms conviviaux, ce qui facilitera la communication entre
‫eux.
‫Donc, si vous voulez essayer quelque chose, c’est un moyen simple et génial d’utiliser des machines de faible puissance ou de
‫ne pas prendre le temps de configurer un environnement pour les quatre prochaines heures.
‫La deuxième option consiste à utiliser Docker-Machine. Si vous l'avez installé, il devrait être au moins de la version
‫10 sinon plus récent.
‫Vous saurez s'il est installé, car vous dactylographierez la commande docker-machine à partir de votre ligne
‫de commande et cela fonctionnera ou non.
‫Si vous avez besoin de le télécharger pour votre système d'exploitation Linux particulier, vous pouvez passer à la documentation de Docker,
‫qui vous donnera en fait une ligne rapide pour le télécharger.
‫Si vous utilisez la Boîte à outils sous Windows 7 et 8, ou Docker pour Windows sous Windows 10 ou Docker pour
‫Mac sur Mac OS, elle sera déjà mise à jour pour ces systèmes d'exploitation.
‫Si vous souhaitez utiliser l'option VirtualBox, qui est l'option par défaut, il vous suffit
‫de passer à virtualbox. org et téléchargez la dernière version pour votre système d'exploitation. Et vous n'avez même rien à faire avec
‫VirtualBox.
‫Il suffit de l'installer. Ensuite, à partir de votre ligne de commande,
‫vous pouvez simplement taper docker-machine create node1, ce qui s'exécutera en créant une machine virtuelle avec
‫BusyBox, une distribution Linux très légère.
‫Cela fonctionnera en réalité en créant une machine Linux très légère, et vous ne ferez que
‫répéter ces deux commandes pour node2 et 3.
‫Si vous avez besoin de plus d'informations sur une machine Docker, vous pouvez consulter ma
‫section de référence pour des liens de didacticiel.
‫Une fois vos machines créées, vous avez vraiment deux options pour accéder à ces machines.
‫Vous pouvez soit utiliser docker-machine ssh, puis le nom du nœud que vous avez créé, ce qui vous permettra de sauter dans
‫cette machine.
‫Ou vous pouvez utiliser la commande d'environnement.
‫Donc, la commande docker-machine env, puis le nom de la machine que vous voulez, vous donneront une sortie, et vous pouvez couper et coller ces options sur votre
‫ligne de commande ou vous pouvez copier et coller l’option du bas, et cela En fait, créez la variable d'environnement
‫de sorte que lorsque j'exécute ma commande docker, car, là encore, l'interface de ligne de commande Docker a simplement
‫besoin de savoir à quel hôte Docker parler. Et par défaut, il parle à votre
‫ordinateur local.
‫Mais cela vient de le reprogrammer pour parler au nœud1
‫de Docker Machine.
‫Si je fais l'info docker, vous verrez que son nom est node1 car c'est celui sur lequel je suis en train de
‫travailler.
‫Pour le dernier exemple, je vais utiliser DigitalOcean, pour lequel j'ai créé un compte.
‫Ici, ils appellent des serveurs Droplets. Si vous n'avez pas de raison particulière d'exécuter un
‫autre système d'exploitation, je vous recommande de commencer par Ubuntu 16. 04 car il s’agit généralement de la première distribution Linux à prendre en charge
‫les nouvelles fonctionnalités de Docker.
‫Donc, c'est le défaut ici.
‫Ensuite, je recommanderais, pour le reste de ce cours, d’utiliser le serveur à 10 dollars par mois. Vous pourrez peut-être vous en tirer avec le
‫serveur à 5 dollars par mois, mais cela risque d’être un peu lent
‫lors de certaines démonstrations ultérieures lorsque nous surveillons et enregistrons des conteneurs au-dessus de nos applications.
‫Ensuite, vous pouvez choisir le centre de données le plus proche de vous. Ensuite, la seule autre option consiste à ajouter une clé SSH.
‫Si vous ne savez pas comment créer votre propre clé SSH localement, puis télécharger le public dans
‫DigitalOcean, il existe
‫un excellent didacticiel que vous pouvez trouver dans les ressources de cette section.
‫En bas, je vais créer trois machines et les nommer noeud1, 2 et 3.
‫Ensuite, je dois probablement attendre environ 60 secondes et ils seront prêts pour moi.
‫Vous pouvez simplement utiliser les adresses IP ici ... sauter sur ces machines.
‫Cliquez sur le bouton Copier puis sur ssh root @ l'adresse IP.
‫Et si votre clé SSH est correctement configurée sur votre ordinateur, elle se connectera automatiquement avec cette
‫clé.
‫Mais dans la section des ressources, je vous ai donné un exemple sur la manière de configurer un fichier. ssh fichier de configuration qui vous permettra d'avoir ces
‫trois noeuds dans une configuration afin que vous puissiez simplement les appeler noeud1, noeud2,
‫noeud3, au lieu de devoir vous rappeler leurs adresses IP, au cas
‫où vous le feriez sur plusieurs jours . C'est vraiment un moyen facile d'entrer et de sortir de ces serveurs.
‫Si vous avez utilisé Docker Machine ou si vous avez utilisé Play With Docker, alors Docker est déjà installé et
‫vous vous apprêtez à créer votre essaim.
‫Mais si vous utilisez DigitalOcean ou si vous lancez vos propres machines virtuelles, vous devez installer Docker.
‫La façon la plus simple de le faire, que j'aime utiliser, est d'utiliser le script à la réception. docker. com.
‫Vous pouvez voir ci-dessus des exemples d'utilisation de ce script pour obtenir la version de production actuelle de
‫Docker sur votre ordinateur.
‫Maintenant, la dernière version de Docker est installée sur mes trois serveurs et nous sommes prêts à
‫configurer notre essaim.
‫Encore une fois, il suffit que ces trois nœuds disposent d’une mise en réseau solide et que des ports
‫spécifiques soient ouverts.
‫Si vous êtes curieux de connaître les ports de swarm, consultez les ressources de cette
‫section où j'ai un lien vers ma propre liste des ports de pare-feu nécessaires au fonctionnement de Swarm.
‫Si vous vous en souvenez, nous avons fait docker swarm init. Maintenant, dans ce cas, qui est assez courant sur les
‫serveurs de cloud, il nous demande de spécifier une adresse IP sur laquelle le service Swarm sera annoncé.
‫Vous souhaitez utiliser une adresse IP accessible à partir des autres serveurs.
‫Dans ce cas, je vais utiliser l'adresse IP publique de mon hôte
‫DigitalOcean.
‫Et c'est parti.
‫Jusqu'ici, c'est comme sur notre machine locale.
‫Cette fois, cependant, je vais copier la commande swarm join, puis passer à node2 et l’ajouter.
‫Et c'est parti.
‫Ce nœud fait maintenant partie de l'essaim.
‫Nous retournons donc à node1, docker node ls, et nous en avons maintenant deux.
‫Vous remarquerez que le deuxième nœud n'est qu'un ouvrier. Parce que comme il est dit, si nous voulions que ce soit un manager,
‫nous aurions dû obtenir ce jeton de manager. Mais pas de soucis. Nous pouvons réellement mettre à jour ce travailleur pour le promouvoir
‫en tant que gestionnaire.
‫Mais si nous sommes sur noeud2, notez que je ne peux pas utiliser les commandes Swarm. Parce que les travailleurs ne sont pas vraiment privilégiés.
‫Ils n'ont pas accès à contrôler l'essaim.
‫Ainsi, ils ne pourront utiliser aucune des commandes Swarm que nous avons l'habitude d'utiliser sur les gestionnaires.
‫De retour sur node1 et le manager, je vais faire une mise à jour du noeud de docker ...
‫Ce que je faisais, c’était frapper Tab pour terminer les onglets, ce qui est toujours une fonctionnalité
‫fantastique dans Docker, en particulier avec autant de fonctionnalités. Cela m'a expliqué chaque étape de l'utilisation de cette commande de mise
‫à jour.
‫Maintenant, cette dernière mise à jour est terminée et elle a changé de noeud 2.
‫Maintenant, si je fais mon noeud docker ls, vous verrez que maintenant, il est considéré comme accessible.
‫Mais le nœud d'origine est toujours le leader. Au fait, le petit astérisque? Cela signifie simplement que c'est
‫le nœud auquel vous parlez actuellement.
‫Pour node3, ajoutons-le en tant que gestionnaire par défaut.
‫Nous devons revenir à notre commande d'origine de Docker Swarm, puis nous devons obtenir le gestionnaire de
‫jetons de jonction.
‫Vous pouvez obtenir ces jetons à tout moment.
‫Vous n'êtes pas obligé de les écrire ou de les sauvegarder.
‫Ils font partie de la configuration de l'essaim et sont stockés cryptés sur disque, alors ne vous inquiétez pas pour ça.
‫Vous pouvez également les modifier si elles sont exposées ou si vous obtenez un serveur potentiellement vulnérable et
‫si vous voulez vous assurer qu'aucun nœud ne peut rejoindre l'essaim de l'ancienne clé, vous pouvez en
‫réalité faire pivoter ces clés. .
‫Je vais copier ceci, collez-le dans node3.
‫Et c'est parti. Retour sur le noeud1.
‫Si je refais un nœud docker, vous verrez que j'ai trois nœuds. Et ils ont tous un statut de manager
‫indiquant qu'ils sont des managers.
‫Nous avons donc maintenant un essaim redondant à 3 nœuds, avec trois gestionnaires. Faisons juste la même chose que nous
‫avons faite précédemment: le service Docker crée un ping alpin
‫8. 8 8 8
‫Seulement cette
‫fois, donnons-lui trois répliques.
‫Et ensuite, faites un
‫service de menu fixe, et nous verrons
‫que trois des trois fonctionnent déjà.
‫Si j'ai créé un nœud docker ps, je peux réellement voir que mon nœud local exécute réellement cette tâche ou ce conteneur.
‫Je peux en fait spécifier le nœud, node2, et cela ne me donnera que les conteneurs s'exécutant sur node2.
‫Si je voulais obtenir une liste complète, je pourrais faire un service de docker ps, et puis somnolent brun est le nom qu'il
‫a donné à notre service. Et vous verrez ici .. permettez-moi d'élargir un peu l'écran.
‫Vous pouvez voir ici que cela énumère nos trois tâches.
‫Une fois que vous avez créé cet essaim, vous n'avez normalement pas besoin de saisir
‫des commandes dans les différents nœuds. Vous pouvez vraiment exploiter tout l'essaim, pour la plupart des choses, à partir de node1.
‫Nous ferons donc une bonne partie de notre travail à partir de node1 lors de conférences futures, mais pour l’instant,
‫félicitez-vous car vous avez un groupe d’essaims pleinement opérationnel.