Maison  >  Article  >  Opération et maintenance  >  Comment utiliser les conteneurs Docker pour s'exécuter sans quitter

Comment utiliser les conteneurs Docker pour s'exécuter sans quitter

PHPz
PHPzoriginal
2023-04-20 10:09:235487parcourir

Docker est une plate-forme de conteneurisation open source qui fournit un environnement permettant aux développeurs de regrouper des applications et toutes leurs dépendances dans un conteneur portable pour le déploiement et la gestion. Les avantages des conteneurs Docker sont qu’ils sont rapides, légers, dotés d’une forte isolation et portabilité. Cependant, dans les applications réelles, nous avons souvent besoin d'une fonctionnalité qui ne quitte pas le conteneur Docker immédiatement après son exécution pour garantir que nos services fonctionnent normalement et de manière stable.

Dans cet article, nous expliquerons comment utiliser les conteneurs Docker pour s'exécuter sans quitter.

1. Utilisez la méthode Bash pour implémenter le conteneur sans quitter

Utilisez la méthode Bash pour implémenter l'exécution du conteneur Docker sans quitter. Vous devez exécuter la commande suivante :

docker run -it --name=容器名称 --restart=always 镜像名称 /bin/bash

Dans cette commande, nous spécifions le démarrage. mode du conteneur Docker en tant que terminal interactif, le nom est Container Name et définit Container Name comme nom de démarrage par défaut après le redémarrage, ce qui garantit que le conteneur ne se fermera pas anormalement et être incapable de se rétablir. Et --restart=always est utilisé pour spécifier que lorsque le conteneur Docker plante ou s'arrête, le conteneur doit être redémarré et Docker redémarrera automatiquement le conteneur. Le nom de l'image final fait référence à l'image qui doit être utilisée pour démarrer le conteneur. 容器名称,并设置了容器名称为重启之后默认启动的名称,可保证容器不会因异常退出而无法自我恢复。而--restart=always用于指定当Docker容器崩溃或停止的情况下,该容器应该被重新启动,此时Docker就会自动重启容器了。最后的镜像名称是指应该使用什么镜像来启动容器。

2. 利用Python脚本实现容器不退出

除了使用Bash方式,我们还可以利用Python脚本实现Docker容器的运行不退出。下面是Python脚本:

import time
while True:
    time.sleep(60)

我们将这段代码保存为run.py文件,并在Dockerfile中添加以下行:

CMD python /app/run.py

接下来,我们使用docker build命令将Dockerfile构建为镜像,然后使用以下命令运行容器:

docker run -d --restart=always 镜像名称

该命令中,我们指定了Docker容器会以后台模式启动,镜像名称为之前构建的镜像。--restart=always同样被用于指定当Docker容器崩溃或停止的情况下,该容器应该被重新启动。

3. 利用Supervisor实现容器不退出

Supervisor是一个进程管理器,可用于监控和控制在Docker容器内运行的进程。Supervisor可让您对容器内的进程进行健康检查,并确保它们保持运行状态,即使该进程崩溃也能够自动重启。

  1. 首先,我们需要在Dockerfile中添加以下行,以确保Supervisor在容器启动时正常运行:
RUN apt-get update && apt-get install -y supervisor
RUN systemctl enable supervisor
ADD supervisor.conf /etc/supervisor/conf.d/
  1. 接下来,我们需要定义supervisor.conf配置文件,该文件定义了应该监控哪些进程以及如何运行它们。以下是一个简单版本的supervisor.conf文件:
[supervisord]
nodaemon=true

[program:your_application_name]
command=/bin/bash -c "while true; do echo hello world; sleep 10; done"

该配置文件中,我们定义了一个名为your_application_name的程序,并指定它以/bin/bash命令执行,无限循环运行echo hello world; sleep 10;命令。

  1. 最后,在容器启动时,需要使用以下命令来启动Supervisor:
/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf

该命令中,我们通过-n参数,将Supervisor进程设置为在前台运行。在启动时,Supervisor会检测/etc/supervisor/conf.d/

2. Utilisez des scripts Python pour empêcher le conteneur de se fermer

En plus d'utiliser la méthode Bash, nous pouvons également utiliser des scripts Python pour implémenter le conteneur Docker sans quitter. Voici le script Python :

rrreee

Nous enregistrons ce code sous un fichier run.py et ajoutons la ligne suivante dans le Dockerfile : 🎜rrreee🎜Ensuite, nous utilisons docker build La commande code> construit le Dockerfile en tant qu'image, puis utilise la commande suivante pour exécuter le conteneur : 🎜rrreee🎜Dans cette commande, nous spécifions que le conteneur Docker sera démarré en mode arrière-plan, et le nom de l'image est celui précédemment image construite. --restart=always est également utilisé pour spécifier que lorsqu'un conteneur Docker plante ou s'arrête, le conteneur doit être redémarré. 🎜🎜3. Utilisez Supervisor pour empêcher le conteneur de se fermer🎜🎜Supervisor est un gestionnaire de processus qui peut être utilisé pour surveiller et contrôler les processus exécutés dans les conteneurs Docker. Supervisor vous permet d'effectuer des contrôles de santé sur les processus dans les conteneurs et de garantir qu'ils restent en cours d'exécution, en redémarrant automatiquement même en cas de panne du processus. 🎜
  1. Tout d'abord, nous devons ajouter les lignes suivantes au Dockerfile pour garantir que le superviseur fonctionne correctement au démarrage du conteneur :
rrreee
  1. Ensuite, nous devons définir le fichier de configuration superviseur.conf, qui définit quels processus doivent être surveillés et comment les exécuter. Ce qui suit est une version simple du fichier supervisor.conf :
rrreee🎜Dans ce fichier de configuration, nous définissons un programme nommé votre_nom_application, et spécifiez qu'il doit être exécuté avec la commande /bin/bash et exécutez la commande echo hello world; dans une boucle infinie. 🎜
  1. Enfin, lorsque le conteneur démarre, vous devez utiliser la commande suivante pour démarrer le Superviseur :
rrreee🎜Dans cette commande, on passe -n code> paramètre, définit le processus Superviseur pour qu'il s'exécute au premier plan. Au démarrage, Supervisor détectera tous les fichiers de configuration dans le répertoire <code>/etc/supervisor/conf.d/ et les utilisera pour gérer les processus dans le conteneur. 🎜🎜Conclusion🎜🎜Dans cet article, nous avons donné trois méthodes pour implémenter la fonctionnalité d'exécution des conteneurs Docker sans quitter, notamment en utilisant la méthode Bash, le script Python et le gestionnaire de processus Supervisor. Chaque méthode a ses avantages et son champ d'application. Dans les applications pratiques, il est nécessaire de choisir la méthode appropriée en fonction de la situation spécifique. Nous espérons que cet article vous sera utile et vous offrira une meilleure garantie du fonctionnement de votre conteneur 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:
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