Docker est l'une des technologies de conteneurisation les plus populaires aujourd'hui, qui permet aux applications de s'exécuter dans des conteneurs autonomes. Une caractéristique importante de Docker est qu'il peut gérer et limiter l'utilisation du processeur et de la mémoire des conteneurs, ce qui est crucial pour maintenir la haute disponibilité et la stabilité des applications. Dans cet article, nous nous concentrerons sur la façon de limiter la taille de la mémoire des conteneurs Docker.
1. Comprendre la gestion de la mémoire de Docker
Dans Docker, chaque conteneur a son propre espace de noms et ses propres restrictions de ressources. Un conteneur avec une limite de mémoire peut être démarré à l'aide de la commande suivante :
docker run -it --memory 512m --name example_container ubuntu:latest
Dans cet exemple, nous avons créé un conteneur nommé example_container et défini sa limite de mémoire à 512 Mo. La commande spécifie également l'image de base utilisée par le conteneur - ubuntu:latest. Notez que le symbole "-it" est un moyen d'indiquer à Docker d'attacher le stdin et la sortie standard du conteneur à cette session de terminal.
La commande ci-dessus peut vérifier l'utilisation actuelle de la mémoire du conteneur via la commande suivante :
docker stats example_container
Avec cette commande, vous pouvez afficher l'utilisation du processeur, l'utilisation de la mémoire, le taux de transmission réseau, etc. du conteneur en temps réel.
2. Méthodes pour limiter la mémoire du conteneur
En plus des options de ligne de commande, lorsque le conteneur est en cours d'exécution, vous pouvez également utiliser les méthodes suivantes pour limiter l'utilisation de la mémoire du conteneur :
1. commande
Vous pouvez utiliser la commande "docker update" pour modifier la limite de mémoire d'un conteneur en cours d'exécution. La commande suivante peut modifier la limite de mémoire de example_container à 1 Go :
docker update --memory 1g example_container
2. À l'aide de docker-compose
Dans l'environnement Docker Compose, vous pouvez utiliser le mot-clé "mem_limit" pour définir la limite de mémoire du conteneur. Voici un exemple de fichier de configuration de conteneur, où le conteneur est nommé « db » et sa limite de mémoire est définie sur 512 Mo :
version: '3' services: db: image: mongo:4.4 mem_limit: 512m
Dans cet exemple, nous avons utilisé l'image mongo:4.4 comme image de base pour le conteneur, et Nommez-le "base de données". Dans le mot-clé "mem_limit", nous fixons la limite de mémoire de ce conteneur à 512 Mo.
3. Comment tester la limite de mémoire du conteneur
Afin de vérifier si la limite de mémoire du conteneur est effective, nous pouvons exécuter certaines tâches gourmandes en mémoire dans le conteneur, par exemple le test "matrice" de l'outil de référence stress-ng. Voici un exemple où nous exécutons le test "matrix" en utilisant plus de mémoire :
docker exec example_container stress-ng --matrix 1 -t 10s
Dans cet exemple, nous utilisons la commande "docker exec" pour exécuter le test "matrix" de stress-ng dans un conteneur en cours d'exécution example_container, qui dure Le temps est 10 secondes.
Pendant le test, nous pouvons observer l'utilisation de la mémoire du conteneur à l'aide de la commande suivante :
docker stats example_container
Normalement, stress-ng devrait consommer beaucoup de mémoire pour la durée du test spécifiée. Si le conteneur utilise uniquement la limite de mémoire spécifiée, ce test doit entraîner une condition de mémoire insuffisante.
Résumé
À travers cet article, nous avons appris comment limiter l'utilisation de la mémoire des conteneurs Docker. Docker propose plusieurs façons de contrôler l'utilisation de la mémoire des conteneurs. Afin de maintenir les conteneurs stables et hautement disponibles, il est nécessaire de limiter l'utilisation de la mémoire des conteneurs. Grâce à des expériences et des benchmarks, nous pouvons vérifier que les conteneurs respectent correctement les limites de mémoire spécifiées.
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!