编程知识 cdmana.com

Docker macvlan

La capacité de connecter des applications conteneurisées à des systèmes externes et à des réseaux physiques est essentielle.Un exemple courant est une application partiellement conteneurisée——Les parties conteneurisées de l'application doivent être associées à celles qui fonctionnent sur des réseaux physiques et VLAN La partie non conteneurisée de la communication.

Docker Intégré Macvlan Drive(Windows En haut, c'est Transparent)C'est pour cette scène..En fournissant au conteneur MAC Et IP Adresse,Faire du conteneur un réseau physique“Citoyens de première classe”.La figure ci - dessous montre les détails.

Macvlan L'avantage est une excellente performance,Aucune cartographie de port ou pont supplémentaire n'est nécessaire,Peut être directement via l'interface hôte(Ou sous - Interface)Interface du conteneur d'accès.Macvlan L'inconvénient est qu'une carte réseau hôte(NIC)Régler en mode hybride(Promiscuous Mode),Cela n'est pas autorisé sur la plupart des plateformes Cloud publiques.

Macvlan Excellent pour le réseau de centres de données au sein de l'entreprise ( Supposons que le Groupe de réseau de l'entreprise accepte NIC Régler en mode hybride),Mais Macvlan Pas dans le Cloud public .

Ensuite, l'image et une scène imaginaire approfondissent la paire Macvlan Compréhension.

Supposons qu'il y ait un réseau physique , Il y a deux configurations VLAN——VLAN 100:10.0.0.0/24 Et VLAN 200:192.168.3.0/24,Comme le montre la figure ci - dessous.

Et puis...,Ajouter un Docker Hôte et connexion au réseau ,Comme le montre la figure ci - dessous.

Une exigence est d'accéder au conteneur VLAN 100.Pour répondre à cette exigence,Utilisez d'abord Macvlan Drive crée un nouveau Docker Réseau.Mais,Macvlan Avant de se connecter au réseau cible ,Plusieurs paramètres doivent être définis.Les points suivants:.

    Informations sur le Sous - réseau .
    Passerelle.
    Peut être attribué à un conteneur IPChamp d'application.
    Interface ou sous - interface utilisée par l'hôte .
La commande suivante crée un macvlan100 De Macvlan Réseau, Le réseau se connectera à VLAN 100.

docker network create -d macvlan \
--subnet=10.0.0.0/24 \
--ip-range=10.0.00/25 \
--gateway=10.0.0.1 \
-o parent=eth0.100 \
macvlan100

La commande utilisée dans cet article est

docker network create -d macvlan --subnet=10.10.0.0/24 --ip-range=10.10.0.0/25 --gateway=10.10.0.1 -o parent=ens33.100 macvlan100

La commande crée macvlan100 Réseau et eth0.100 Sous - Interface. La configuration actuelle est la suivante: .

Macvlan Adoption des normes Linux Sous - Interface, Doit être ciblé VLAN Réseau correspondant ID. Dans ce cas, le réseau cible est VLAN 100, Donc marquez les sous - interfaces comme .100(etho.100).

Adoption --ip-range Les paramètres indiquent Macvlan Qu'est - ce qu'un réseau dans un sous - réseau IP L'adresse peut être assignée au conteneur . Ces adresses doivent être conservées , Ne peut pas être utilisé pour d'autres noeuds ou DHCP Serveur, Parce qu'il n'y a pas de fonction de gestion pour vérifier IP Problèmes de coïncidence régionale .

macvlan100 Le réseau est prêt pour le conteneur , Exécutez la commande suivante pour déployer le conteneur sur ce réseau .

docker container run -d --name mactainer1 \
--network macvlan100 \
alpine sleep 1d

La configuration actuelle est la suivante: . Réseau inférieur (VLAN 100)C'est exact. Macvlan La magie de , Ne peut voir que le conteneur MAC Et IP Adresse. Sur cette base ,mactainer1 Le conteneur peut ping Par n'importe quelle adhésion VLAN 100 Le système de, Et communiquer .

    Attention!: Si la commande ci - dessus ne peut pas être exécutée , Probablement à cause de l'hôte NIC Mode hybride non pris en charge . N'oubliez pas que les plateformes Cloud publiques ne permettent pas le mode hybride .

Il est déjà là. Macvlan Réseau, Et un conteneur passe Macvlan Connecté à un VLAN Milieu.Mais,Ce n'est pas la fin.Docker Macvlan Drive est basé sur un nom stable et fiable Linux Construit à partir du noyau .

Donc,,Macvlan - Oui. VLAN De Trunk Fonction. Peut être dans le même Docker Créer plusieurs sur l'hôte Macvlan Réseau, Et connectez le conteneur comme indiqué ci - dessous .

Conteneurs et journaux de service pour le dépannage
Quand on pense qu'il y a un problème de connexion réseau entre les conteneurs ,Vérifiez daemon Journaux et journaux de conteneurs (Journal d'application)Est très nécessaire.In Linux Allez.,daemon L'emplacement de stockage des journaux dépend de la façon dont le système actuel est initialisé .

Si oui Systemd, Les journaux sont stockés dans Journald,Et peut passer par journalctl -u docker.service Vue des commandes;Si ce n'est pas le cas, Systemd Les lecteurs doivent voir ce qui suit: .

    Ubuntu Système:upstart:/var/log/upstart/docker.log.
    RHEL Série:systems:/var/log/messages.
    Debian:/var/log/daemon.log.
    Mac Édition Docker:∼/Library/Containers/com.docker.docker/Data/com. docker.driver.amd64-linux/console-ring.
Peut également être réglé daemon Niveau de détail du Journal .Peut être édité daemon Profil(daemon.json),Oui. debug Set to true,Et en même temps log-level Pour l'une des valeurs suivantes .

    debug: Niveau de journalisation le plus détaillé .
    info:Par défaut, Niveau de détail secondaire .
    warn: Troisième niveau de détail du Journal .
    error: Quatrième niveau de détail du Journal .
    fatal: Niveau de log le plus grossier .
Le clip suivant est tiré de daemon.json, Où le mode de débogage est activé , Et définissez le niveau du Journal à debug. Cette configuration est disponible dans tous les Docker Toutes les plateformes sont efficaces .

{
    <Snip>
    "debug":true,
    "log-level":"debug",
    <Snip>
}

Après avoir modifié le profil,Redémarrage nécessaire Docker Pour entrer en vigueur.C'est ça. daemon J'ai le journal.. Qu'est - ce qu'un journal de conteneur? ?

Peut passer docker container logs Commande pour voir un journal de conteneur séparé ,Adoption docker service logs Vous pouvez voir Swarm Journal de service.Docker Prise en charge de plusieurs pilotes de journaux , Tout ne passe pas. docker logs Vue de la commande.

Tout comme le pilote et la configuration du Journal moteur ,Chaque Docker L'hôte fournit également le pilote de journal par défaut et la configuration pour le conteneur .Il s'agit notamment de json-file(Par défaut)、journald( Seulement en cours systemd De Linux En vigueur dans l'hôte )、syslog、splunk Et gelf.

json-file Et journald Peut être plus facile à configurer , Et peut passer doker logs Et docker service logs Vue des commandes.Le format de commande spécifique est:

docker logs <container-name> Et docker service logs <service-name>
Si d'autres lecteurs de journaux sont utilisés , Peut être visualisé par des outils natifs fournis par des plateformes tierces .

Le clip suivant est daemon.json Partie du document, Montrer comment configurer Docker Utilisation de l'hôte syslog Comment.

{
    "log-driver": "syslog"
}
Vous pouvez configurer une politique de journalisation distincte pour un conteneur ou un service , Il suffit de passer au démarrage --log- driver Et --log-opts Spécifiez un pilote de journal spécifique .Ça va l'écraser. daemon.json Configuration dans.

Le journal du conteneur prend effet si le processus d'application est à l'intérieur du conteneur PID Pour 1, Et affiche le journal normal vers STDOUT, Sortie du Journal des exceptions vers STDERR. Le pilote de journal va mettre ces “Log” Envoyer à l'emplacement spécifié par la configuration du pilote de journal .

Si le Journal d'application est écrit sur un fichier , Les fichiers journaux peuvent être redirigés vers STDOUT Et STDERR.

L'exemple ci - dessous montre comment exécuter docker logs Commande pour voir le Journal d'un conteneur .

docker logs web

En général, c'est très probable daemon .Une exception liée à la connexion réseau a été trouvée dans le journal ou le journal du conteneur .

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

Scroll to Top