编程知识 cdmana.com

Découverte du Service de docker

En tant qu'architecture de réseau de base,Libnetwork Plusieurs services Internet importants sont également disponibles——Découverte de services.

Découverte de services(Service Discovery)Autoriser les contenants et Swarm Les services sont situés les uns sur les autres par nom.La seule exigence est d'être dans le même réseau.

Sa mise en œuvre sous - jacente utilise Docker Intégré DNS Serveur,Pour chaque conteneur DNS Fonction d'analyse.L'image ci - dessous montre le conteneur“c1”Par nom ping Conteneur“c2”Processus.Swarm Le principe de service est le même.

Voici une analyse étape par étape de l'ensemble du processus.

1) ping c2 Appel de commande local DNS Analyseur,Essayez de“c2”Se résoudre au concret IP Adresse.Chaque Docker Les conteneurs ont tous des locaux DNS Analyseur.

2) Si l'analyseur local n'est pas trouvé dans le cache local“c2”Correspondant IP Adresse,L'analyseur local va Docker DNS Le serveur lance une requête récursive.L'analyseur de service local est pré - configuré et sait Docker DNS Détails du serveur.

3) Docker DNS Le serveur a enregistré tous les noms de conteneurs et IP Cartographie des adresses,Où le nom du conteneur est le conteneur qui a été créé par --name Ou --net-alias Paramétrage.Docker DNS Le serveur connaît le conteneur “c2”De IP Adresse.

4) DNS Retour au service“c2”Correspondant IP Adresse“c1”Local DNS Analyseur. Cela se produit parce que les deux conteneurs sont dans le même réseau , Cette commande n'est pas possible si le réseau est différent .

5) ping Les ordres sont envoyés à “c2”Correspondant IP Adresse.

Chaque démarrage utilise --name Paramètre Swarm Service ou conteneur séparé , Ils vont mettre leur nom et IP Adresse enregistrée à Docker DNS Services. Les conteneurs et les copies de service sont disponibles via Docker DNS Les services se découvrent .

La découverte du service est limitée par le réseau , La résolution des noms n'est valable que pour les conteneurs et les services situés sur le même réseau . Si deux conteneurs sont sur un réseau différent , Alors on ne peut pas s'analyser .

Un dernier mot sur la découverte de service et la résolution de nom .

L'utilisateur peut Swarm Services et conteneurs autonomes personnalisés DNS Configuration.--dns Le paramètre permet de spécifier un DNS Liste des services, Au cas où Docker DNS Cas où la résolution du serveur a échoué .

Peut également être utilisé --dns-search Le paramètre spécifie le nom de domaine à utiliser lors de la personnalisation de la requête ( Par exemple, lorsque le nom de la requête n'est pas un nom de domaine complet ).

In Linux Allez., Les travaux ci - dessus sont effectués à l'intérieur du récipient /etc/resolve.conf Ajout d'une entrée à l'intérieur du fichier pour implémenter .

Docker Mode de publication du service

Docker Swarm Prise en charge de deux modes de publication des services , Les deux modes garantissent que le service est accessible à partir de l'extérieur du cluster .

    IngressMode(Par défaut).
    HostMode.
Adoption Ingress Services publiés en mode ,Peut être garanti à partir de Swarm Tout noeud du cluster ( Même s'il n'y a pas de copie du service en cours d'exécution ) Accès au service ;Par Host .Les services publiés par Pattern ne sont accessibles que par le noeud qui exécute la réplique de service . La figure ci - dessous montre la différence entre les deux modes .

Ingress Le mode est par défaut , À tout moment -p Ou --publish Quand le Service a été publié ,Par défaut, tout est Ingress Mode; Si nécessaire avec Host Mode Publishing Service ,Doit être utilisé --publish Format complet du paramètre ,Et ajouter mode=host.Regardons ensemble Host Exemple de modèle.

$ docker service create -d --name svc1 \
--publish published=5000,target=80,mode=host \
nginx
Quelques notes sur la commande .docker service mode Autoriser l'utilisation d'une syntaxe de format complet ou d'une syntaxe de format simple pour publier des services . Format simple comme -p 5000:80, Il est apparu plusieurs fois . Impossible de publier dans un format simple Host Services en mode .

Format complet tel que --publish published=5000,target=80,mode=host. Cette méthode utilise des virgules pour séparer plusieurs paramètres , Et aucun espace n'est autorisé avant et après la virgule . Les options spécifiques sont décrites ci - dessous .

    published=5000 Indique que le service passe par le port 5000 Prestation de services externes .
    target=80 Signifie envoyé à published Port 5000 Demandes, Sera cartographié à la copie de service 80 Au - dessus du port.
    mode=host Indique que seul un noeud qui a envoyé une demande externe à une réplique de service peut accéder au service .
Généralement utilisé Ingress Mode.

Au rez - de - chaussée.,Ingress Le modèle est appelé Service Mesh Ou Swarm Mode Service Mesh Un réseau de routage à quatre niveaux pour .Le graphique ci - dessous montre Ingress Mode comment la demande externe suivante circule , Accès final au service .

La commande supérieure de l'image ci - dessus déploie une commande appelée “svc1”De Swarm Services. Le service est connecté à overnet Réseau,Et publié à 5000 Port.

Publié comme indiqué ci - dessus Swarm Services(--publish published=5000,target=80)Il sera là. Ingress Le réseau 5000 Port pour la publication .Parce que Swarm Tous les noeuds sont connectés Ingress Réseau, Donc ce port a été publié à SwarmDans le champ d'application.

Cluster assure l'arrivée Ingress De n'importe quel noeud du réseau 5000 Trafic du port,Est acheminé vers 80 Port“svc1”Services.

En cours“svc1” Le service n'a déployé qu'une seule copie , Il y a une règle de cartographie dans le cluster :“Toutes les visites Ingress Réseau 5000 Le trafic du port doit être acheminé vers l'exécution “svc1” Au - dessus du noeud de la réplique de service ”.

La ligne rouge montre l'accès Node De 15000 Trafic du port,Adoption Ingress Réseau, A été acheminé vers Node2 Sur la réplique de service que le noeud exécute .

Le trafic entrant peut accéder à 4 - Oui. Swarm N'importe lequel des noeuds ,Mais les résultats sont les mêmes,Il est important de comprendre cela. C'est parce que le service passe Ingress Le réseau a réalisé Swarm Publication dans le champ d'application .

En outre,Un autre point est important.: S'il y a plus d'une copie en cours d'exécution , Le trafic sera moyen au - dessus de chaque copie , Comme le montre la figure ci - dessous .

Docker network Sous - commande réseau

docker network Les commandes sont utilisées pour gérer le réseau .Peut être utilisé docker network Créer une sous - commande pour ,Liste,Vérifiez,Supprimer, Connexion et déconnexion du réseau .

Le format syntaxique est le suivant::

docker network COMMAND

docker network connect   Connectez le conteneur au réseau.
docker network create     Créer un nouveau Docker Réseau.Par défaut,In Windows Sera adopté NAT Drive,In Linux Sera adopté Bridge Drive.Peut être utilisé -d Parameter specified Drive (Type de réseau).
docker network disconnect    Déconnecter le réseau du conteneur .
docker network inspect    Offre Docker Détails de configuration du réseau .
docker network ls      Utilisé pour lister les opérations locales Docker Tous les réseaux de l'hôte .
docker network prune     Supprimer Docker Tous les réseaux inutilisés sur l'hôte .
docker network rm     Supprimer Docker Réseau spécifié sur l'hôte .

 

版权声明
本文为[Petit, York?]所创,转载请带上原文链接,感谢
https://cdmana.com/2022/01/202201080556240989.html

Scroll to Top