Maison Opération et maintenance exploitation et maintenance Linux Linux et Docker : Comment mettre en œuvre la planification dynamique et la gestion des ressources des conteneurs ?

Linux et Docker : Comment mettre en œuvre la planification dynamique et la gestion des ressources des conteneurs ?

Jul 29, 2023 pm 04:25 PM
linux docker 动态调度

Linux et Docker : Comment mettre en œuvre une planification dynamique et une gestion des ressources des conteneurs ?

Résumé :
Avec le développement rapide et l'application généralisée de la technologie des conteneurs, la manière de mieux mettre en œuvre la planification dynamique et la gestion des ressources des conteneurs est devenue un sujet important. Cet article se concentrera sur certains mécanismes et méthodes courants sous Linux et Docker, ainsi que sur des exemples de code, pour aider les lecteurs à mieux comprendre la planification dynamique et la gestion des ressources des conteneurs.

Introduction : 
L'essor de la technologie des conteneurs a apporté des changements révolutionnaires dans le déploiement et le fonctionnement des applications. La technologie de virtualisation traditionnelle nécessite un hyperviseur, tandis que la technologie des conteneurs peut exécuter des applications directement sur la machine hôte sans avoir besoin d'hyperviseurs supplémentaires.

Le cœur de la technologie des conteneurs est le moteur de conteneurs, dont le plus célèbre est Docker. Docker fournit une solution de conteneur légère et facile à utiliser et est devenu le représentant de la technologie des conteneurs. Cet article prendra Docker comme exemple et le combinera avec le mécanisme du système Linux pour présenter comment implémenter la planification dynamique et la gestion des ressources des conteneurs.

1. Technologie des conteneurs sous Linux

Dans les systèmes Linux, la technologie des conteneurs repose principalement sur deux fonctions importantes, à savoir le groupe de contrôle et l'espace de noms. les groupes de contrôle (groupes de contrôle) peuvent limiter et gérer les ressources système, tandis que l'espace de noms peut isoler les processus et les systèmes de fichiers.

  1. cgroup

cgroup est un puissant mécanisme de configuration et de restriction des ressources qui peut définir des limites de ressources pour différents groupes de processus. En utilisant des groupes de contrôle, nous pouvons spécifier différentes limites de ressources, telles que les quotas de CPU, les quotas de mémoire, etc., pour les processus du conteneur et les processus externes. Dans les systèmes Linux, les groupes de contrôle sont largement utilisés pour implémenter la gestion des ressources des conteneurs.

Voici un exemple de code qui utilise des groupes de contrôle pour limiter l'utilisation du processeur par les processus au sein d'un conteneur :

#!/bin/bash

# 创建cgroup
cgcreate -g cpu:/docker_container

# 设置CPU配额为50%
cgset -r cpu.cfs_quota_us=50000 /docker_container

# 启动容器
docker run -d -it --name=my_container --cgroup-parent=/docker_container ubuntu /bin/bash
Copier après la connexion

Dans l'exemple ci-dessus, nous avons utilisé la commande cgcreate pour créer un groupe de contrôle nommé docker_container et utilisé cgset pour définir le quota de processeur de le groupe C est de 50 %. Ensuite, nous utilisons la commande docker pour démarrer un conteneur nommé my_container et l'attribuons au groupe de contrôle docker_container. De cette façon, l'utilisation du processeur par le processus au sein du conteneur sera limitée à 50 %.

  1. namespace

namespace peut fournir un environnement d'exécution indépendant pour le processus, y compris le système de fichiers et l'espace de processus. En utilisant l'espace de noms, nous pouvons réaliser une isolation entre le conteneur et l'hôte.

Voici un exemple de code qui utilise un espace de noms pour isoler un système de fichiers dans un conteneur :

#define _GNU_SOURCE
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
    // 创建一个新的namespace
    int ret = unshare(CLONE_NEWNS);
    if (ret) {
        perror("unshare");
        exit(EXIT_FAILURE);
    }

    // 在新的namespace中挂载一个文件系统
    ret = mount("rootfs", "/mnt", "ext4", MS_MGC_VAL, NULL);
    if (ret) {
        perror("mount");
        exit(EXIT_FAILURE);
    }

    // 执行容器需要的命令
    system("/bin/bash");

    return 0;
}
Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons la fonction unshare pour créer un nouvel espace de noms et y monter un système de fichiers rootfs. Ensuite, nous avons exécuté une commande /bin/bash. Cette commande exécutée sera exécutée dans le nouvel espace de noms, réalisant ainsi l'isolation du système de fichiers.

2. Planification des conteneurs et gestion des ressources dans Docker

En plus de fournir des conteneurs, Docker fournit également des fonctions avancées, telles que la planification dynamique et la gestion des ressources des conteneurs. Ces fonctionnalités font de Docker une puissante plateforme de gestion de conteneurs.

  1. Planification dynamique des conteneurs

Docker implémente la planification dynamique des conteneurs à l'aide d'un planificateur. Le planificateur peut attribuer automatiquement des conteneurs aux hôtes en fonction de différentes politiques de planification. Les stratégies de planification couramment utilisées sont :

  • Planification aléatoire : allouez des conteneurs aux hôtes en fonction d'algorithmes aléatoires ;
  • Planification d'équilibrage de charge : allouez des conteneurs à l'hôte le plus inactif en fonction de la charge de l'hôte ;
  • Planification collaborative :

Voici un exemple de code pour la planification de conteneurs à l'aide du planificateur de Docker :

#!/bin/bash

# 使用负载均衡调度器
docker run -d -p 8080:80 --name=mynginx --scheduler=random nginx
Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons le planificateur d'équilibrage de charge pour attribuer un conteneur nommé mynginx à un hôte. Le conteneur écoutera sur le port 8080 de l'hôte et transmettra la demande au port 80 dans le conteneur.

  1. Gestion des ressources

Docker fournit une série de commandes et d'API pour implémenter la gestion des ressources des conteneurs. Nous pouvons utiliser ces fonctionnalités pour surveiller et gérer l'utilisation des ressources des conteneurs.

Voici un exemple de code qui utilise la commande Docker pour afficher l'utilisation des ressources d'un conteneur :

#!/bin/bash

# 查看容器的CPU使用情况
docker stats --format "table {{.Container}}    {{.CPUPerc}}    {{.MemUsage}}" my_container
Copier après la connexion

Dans l'exemple ci-dessus, nous avons utilisé la commande docker stats pour afficher l'utilisation du processeur et l'utilisation de la mémoire d'un conteneur nommé my_container.

Conclusion :
Cet article présente quelques méthodes courantes et des exemples de codes pour implémenter la planification dynamique et la gestion des ressources des conteneurs sous Linux et Docker. En utilisant des groupes de contrôle pour implémenter des restrictions de ressources et des espaces de noms pour implémenter l'isolation de l'environnement, nous pouvons mieux gérer et exploiter les conteneurs. Docker fournit en outre des fonctionnalités avancées, telles que la planification dynamique et la gestion des ressources, pour nous aider à mieux utiliser la technologie des conteneurs. J'espère que grâce à l'introduction de cet article, les lecteurs pourront mieux comprendre la planification dynamique et la gestion des ressources des conteneurs.

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment changer la source d'image Docker en Chine Comment changer la source d'image Docker en Chine Apr 15, 2025 am 11:30 AM

Vous pouvez passer à la source de miroir domestique. Les étapes sont les suivantes: 1. Modifiez le fichier de configuration /etc/docker/daemon.json et ajoutez l'adresse source miroir; 2. Après enregistrer et sortir, redémarrez le service Docker Sudo Systemctl Docker pour améliorer la vitesse et la stabilité du téléchargement d'image.

Comment utiliser Docker Desktop Comment utiliser Docker Desktop Apr 15, 2025 am 11:45 AM

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

Comment créer un miroir dans Docker Comment créer un miroir dans Docker Apr 15, 2025 am 11:27 AM

Étapes pour créer une image docker: écrivez un dockerfile qui contient les instructions de construction. Créez l'image dans le terminal, en utilisant la commande docker build. Marquez l'image et attribuez des noms et des balises à l'aide de la commande docker tag.

Comment lire la version docker Comment lire la version docker Apr 15, 2025 am 11:51 AM

Pour obtenir la version Docker, vous pouvez effectuer les étapes suivantes: exécutez la commande docker "docker --version" pour afficher les versions client et serveur. Pour Mac ou Windows, vous pouvez également afficher les informations de version via l'onglet Version de la GUI de bureau Docker ou du menu de bureau à propos de Docker.

Comment enregistrer l'image docker Comment enregistrer l'image docker Apr 15, 2025 am 11:54 AM

Pour enregistrer l'image dans Docker, vous pouvez utiliser la commande docker commit pour créer une nouvelle image, contenant l'état actuel du conteneur spécifié, Syntaxe: Docker Commit [Options] Nom d'image de l'ID de conteneur. Pour enregistrer l'image dans le référentiel, vous pouvez utiliser la commande docker push, Syntax: Docker Push Image Name [: Tag]. Pour importer des images enregistrées, vous pouvez utiliser la commande docker pull, syntaxe: docker pull name [: tag].

Comment exécuter la commande docker Comment exécuter la commande docker Apr 15, 2025 am 11:24 AM

Comment exécuter les commandes Docker? Installez Docker et démarrez le démon. Commandes docker communes: Docker Images: Afficher l'image docker PS: afficher le conteneur Docker Exécuter: Exécuter le conteneur Docker Stop: Stop Container Docker RM: Delete Container Interagissez avec Container à l'aide de Docker Commande: Docker Exec: Exécuter Commande Docker Docker: Attacher les journaux Docker Console: Afficher le journal Dock

Comment mettre à jour l'image de Docker Comment mettre à jour l'image de Docker Apr 15, 2025 pm 12:03 PM

Les étapes pour mettre à jour une image Docker sont les suivantes: Tirez la dernière étiquette d'image Nouvelle image Supprimer l'ancienne image pour une balise spécifique (facultative) Redémarrez le conteneur (si nécessaire)

Comment appeler docker lnmp Comment appeler docker lnmp Apr 15, 2025 am 11:15 AM

Docker LNMP Container Call Étapes: Exécutez le conteneur: docker run -d --name lnmp-container -p 80:80 -p 443: 443 lnmp-stack pour obtenir le conteneur ip: docker inspect lnmp-container | Site Web d'accès Grep iPadress: http: // & lt; contener ip & gt; /index.phpssh Access: docker exec -it lnmp-container bash access mysql: mysql -u roo

See all articles