Maison  >  Article  >  Opération et maintenance  >  La maîtrise la plus systématique de la technologie de base Docker (partage de synthèse)

La maîtrise la plus systématique de la technologie de base Docker (partage de synthèse)

WBOY
WBOYavant
2022-02-04 07:00:312341parcourir

Cet article vous apporte quelques questions connexes sur le fonctionnement des conteneurs de la technologie de base Docker, ainsi qu'une explication détaillée de Dockerfile, etc. J'espère qu'il vous sera utile.

La maîtrise la plus systématique de la technologie de base Docker (partage de synthèse)

1. Docker

1. Introduction

  • Basé sur des technologies telles que Cgroup, Namespace et Union FS du noyau Linux, les processus sont encapsulés et isolés. Il s'agit d'une technologie virtuelle au niveau du système d'exploitation. Étant donné que le processus isolé est indépendant de l'hôte et que les autres processus isolés sont donc appelés conteneurs
  • L'implémentation initiale était basée sur LXC à partir de la version 0.7, LXC a été supprimé et le Libcontainer auto-développé a été utilisé à la place. a évolué pour utiliser runC et Containerd
  • Docker Sur la base des conteneurs, une encapsulation plus poussée a été réalisée, depuis les systèmes de fichiers, l'interconnexion réseau jusqu'à l'isolation des processus, etc., ce qui simplifie grandement la création et la maintenance des conteneurs, rendant la technologie Docker plus légère et plus rapide que la technologie des machines virtuelles

2 . Avantages de Docker

  • Utilisation plus efficace des ressources système
  • Temps de démarrage plus rapide
  • Environnement d'exécution cohérent
  • Livraison et déploiement continus
  • Migration plus facile
  • Maintenance et extension plus faciles
.

3. Comparaison entre Docker et les machines virtuelles

2. Installation de Docker

Installation de l'article de référence : Installer Docker Engine sur Ubuntu | Documentation Docker

3 . Fonctionnement du conteneur

  • Démarrer :

docker run:

-it interaction

-d background run

-p mappage des ports

                                                                                                                                                                                  -v disk mount

  • Démarrez le conteneur

docker start

  • stop conteneur

docker stop

  • Afficher le processus du conteneur

docker ps

  • Afficher les détails du conteneur

docker inspect

  • Copier les fichiers dans le conteneur

docker cp file1

  • docker quitte le conteneur, et Ne fermez pas le conteneur : ctrl+q+p

  • docker quitte le conteneur, mais ferme le conteneur : exit

  • Interroger toutes les images Docker

  • docker images

  • Entrepôt miroir Docker

  • Hub Docker : https://hub.docker.com

Créer un entrepôt miroir privé : docker run -d -p 5000 : 5000 registre

Quatre Dockerfile détaillé. explication

Le fichier Docker est généralement divisé en quatre parties : informations de base sur l'image, informations de maintenance, instructions d'utilisation de l'image et instructions d'opération de démarrage du conteneur

    Commandes communes
FROM : Spécifiez l'image de base, doit être la première commande

Format :

    DE

           DE :

          DE @

Exemple :

         DEPUIS ubuntu

MAINTAINER : Informations de maintenance

format :

                                                MAINTAINER

Exemple

MAINTAINER Ribbon

RUN : Commande à exécuter lors de la construction de l'image

Format :

Exécution du shell : RUN

exécution exec : RUN ["executable", "param1", "param2"]

Exemple :

RUN apk update

RUN ["/etc/execfile", "arg1", "arg2"]

RUN apt-get update && apt-get install Ces deux commandes sont toujours connectées avec &&, sinon la couche de construction apt-get update sera sera mis en cache. Cela entraînera l'échec de l'installation du nouveau package

AJOUTER : ajoutez des fichiers locaux au conteneur, tar et d'autres types seront automatiquement décompressés et les ressources réseau seront accessibles, similaire à wget

Format :

AJOUTER ... Multi -Stage dans Dockerfile (Construction multi-étapes) -SparkDev -Blog Garden

Format :

Copie & LT & GT ; & GT; : Appelé après la construction du conteneur, c'est-à-dire appelé uniquement au démarrage du conteneur :

CMD ["executable", "param1", "param2"] (fichier exécutable, priorité)

CMD [" param1", "Param2"] (définition du point d'entrée, appelez directement Entrypoint pour ajouter des paramètres) Commande CMD Param1 Param2 (exécution de la commande interne du shell)

Exemple :

CMD ["EthTool", "-Help"]

CMD Echo "1111"

ENTRTPOINT : Configurez le conteneur pour le rendre exécutable

.

Format :

ENTRYPOINT ["exécutable", "param1", "param2"] (fichier exécutable, priorité) Commande ENTRYPOINT param1 param2 (commande interne du shell)

Exemple :

ENTRYPOINT /httpserver

                      CMD [ - c]

LABAL : Utilisé pour ajouter des données source à l'image

Format :

          LABEL = = ...Exemple :

         LABEL multi.label1="value1" multi.label2="value2" other="value3"


ENV : Définir les variables d'environnement

Format :

      ENV ;value>

Exemple :

    ENV MY_SERVICE_PORT=80 UDP_PORT=90

EXPOSE : Spécifiez le port pour l'interaction externe

Format :

    EXPOSE < port> [

Exemple :

                                        using using using       using using           use using ' 's ' 's out through out en utilisant off ‐ ‐ ‐‐ ‐‐ et ​ to VOLUME [

Exemple :

VOLUME [" /data ", "/usr1/jenkins"]

USER : spécifiez le nom d'utilisateur ou l'UID lors de l'exécution du conteneur, et l'exécution ultérieure utilisera également l'utilisateur spécifié.

Format:

USER user USER user:group USER uid

USER uid:gid

USER user:gid

USER uid:group

Exemple :

USER www

ARG : utilisé pour spécifier à quoi passer la construction s'exécute Variables lorsque

Format :

ARG [=]

Exemple : ARG build_user=ribbon

5. Opérations courantes de NameSpace

  • Afficher l'espace de noms du système actuel :

  • lsns -t

Afficher l'espace de noms d'un processus :

    ls -la /proc/

  • Afficher la commande en cours d'exécution d'un espace de noms

nsenter -t -n

6. : cgroups - Vous pouvez vous référer au bref livre Apprenons-en davantage sur cet article

Simulation des groupes C pour contrôler les ressources CPU

  • Grâce à la simulation, pour mieux vous familiariser avec l'effet des groupes C contrôlant les ressources, créez d'abord le dossier cpudemo

Exécutez top et vous pouvez voir que Busyloop utilise deux ressources CPU

Ajoutez le processus au groupe de configuration du processus cgroup

  • Définir le quota CPU

Vous pouvez voir que l'utilisation de 200 % des ressources CPU est réduit avec succès à 1%

Simuler des groupes de contrôle Le dépassement de la limite des ressources mémoire sera un kill du MOO

Créez un dossier memorydemo dans le répertoire /sys/fs/cgroup/memory

Exécutez la mémoire programme consommateur, utilisez watch pour interroger l'utilisation de la mémoire

La configuration du processus entre dans le groupe de configuration des groupes de contrôle

Définissez la taille maximale de la mémoire

  • Attendez que le programme soit tué par le MOO, dmesg peut voir les informations sur le kill

Remarque : Supprimez le dossier cgroup auto-créé. Vous devez utiliser cgroup-tools

7. Union FS

Les technologies utilisées par Docker sont. tous dérivés des technologies Linux et ne sont pas innovants, et l'innovation de Docker est le système de fichiers.

1. Concept :

  • Un système de fichiers qui monte différents répertoires sous le même système de fichiers virtuel
  • Prend en charge la définition des autorisations en lecture seule, en lecture et sans autorisation pour chaque répertoire membre
  • Superposition du système de fichiers, en lecture seule Le répertoire des autorisations peut être logiquement modifié. La modification ici est incrémentielle et n'affecte pas la partie en lecture seule. Habituellement, le but d'Union FS est de monter plusieurs disques dans le même répertoire. L'autre est de combiner la partie en lecture seule avec la partie en écriture.
  • 2. Illustration d'Union FS
Dans la conception de l'image Docker, la notion de calque est introduite, c'est-à-dire que chaque étape de l'opération de l'utilisateur pour créer l'image générera un calque, qui est un calque ajouté. . Mesurez rootfs (un répertoire), de sorte que les conteneurs où se trouvent l'application A et l'application B fassent référence conjointement à la même couche du système d'exploitation Ubuntu et à la même couche d'environnement Golang (en tant que couche en lecture seule), et que chacun ait sa propre couche d'application et accessible en écriture. couche. Lors du démarrage du conteneur, montez les couches pertinentes dans un répertoire via UnionFS en tant que système de fichiers racine du conteneur.

3. Pilote de stockage de conteneur

4. Simulez Union FS pour mieux comprendre l'effet


Étant donné que la version actuelle de Docker utilise le pilote de stockage overlayFS, nous utilisons overlay pour l'accrocher. Pour mener des expériences, overlayfs est implémenté via trois répertoires : le répertoire inférieur, le répertoire supérieur et le répertoire de travail. Il peut y avoir plusieurs répertoires inférieurs. Le répertoire de travail est le répertoire de base du travail. Après le montage, le contenu sera effacé et utilisé. . Pendant le processus, le contenu est invisible pour l'utilisateur. Enfin, la vue unifiée présentée à l'utilisateur une fois le montage conjoint terminé est appelée répertoire fusionné.

Exécutez la commande suivante :

mkdir upper lower merged work
echo "lower" > lower/in_lower.txt
echo "from lower" > lower/in_both.txt
echo "from upper" > upper/in_both.txt
echo "upper" > upper/in_upper.txt
path=$(pwd)
mount -t overlay overlay -o lowerdir=${path}/lower,upperdir=${path}/upper,workdir=${path}/work ${path}/merged

Vous pouvez voir l'effet de l'utilisation du montage du fichier du pilote de stockage par superposition. Une fois l'expérience terminée, pour restaurer l'environnement, vous devez d'abord démonter le répertoire fusionné, puis supprimer les quatre répertoires. Si vous supprimez d'abord les autres, rm: ne peut pas supprimer 'merged/' : un périphérique ou une ressource occupé peut apparaître. ce qui entraîne la suppression du répertoire fusionné. Euh 8. Réseau Docker

1. Outils d'installation

Système Centos :

$ yum install bride-Utils

système Ubuntu :

$ APT-GET Installer Bridge-Utils

2.

Le mode réseau intégré de Query Docker

  • docker run sélectionne le mode réseau à exécuter

1) Mode hôte : utilisez --net=host pour spécifier. Partagez un ensemble de réseaux avec l'hôte

2) Mode Aucun : utilisez --net=none pour spécifier. La configuration réseau doit être configurée par vous-même

3) Mode pont : utilisez --net=bridge pour spécifier le paramètre par défaut.

pont de diagramme logique de réseau Docker et NAT

4) Mode conteneur : utilisez --net=container:NAME_or_ID pour spécifier. Utilisez la configuration réseau d'autres conteneurs

Le diagramme du mode réseau est à peu près comme indiqué ci-dessous

3 Simulez le fonctionnement du pont réseau Docker

  • Create --net=none nginx.

  • Créer un espace de noms réseau

  • Créer un lien d'espace de noms réseau

  • Vérifiez le périphérique de pont actuellement créé

  • Créer une paire Veth

  • Effectuer une configuration réseau

  • Configurer le réseau B

Générer un périphérique réseau eth0 dans ngin x docker

vers eth0 Configurer l'ip passerelle

  • nginx peut accéder à

  • Configurez nat pour que Windows puisse également accéder à

  • Supprimer après utilisation Préciser les règles nat

Apprentissage recommandé : "Tutoriel vidéo Docker"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer