[DOCKER] Image de conteneur recommandée pour les applications Python

Vous êtes-vous déjà demandé quelle image Docker choisir comme environnement d'exécution pour votre application Python? J'avais tendance à décider de m'installer sur l'image officielle après m'être inquiété à chaque fois, j'ai donc décidé de faire une comparaison ici. J'espère que cela sera utile à tout le monde.

Éléments d'évaluation pour la sélection d'images

Lors du choix d'une image, je pense qu'il y a les perspectives suivantes.

Perspective Contenu
Stabilité Il est difficile de l'utiliser pendant une longue période si la structure et le contenu du fichier changent fréquemment, une certaine stabilité est donc requise.(Je ne pense pas qu'il y ait beaucoup)。
Par conséquent, j'aimerais utiliser une image proche de l'image officielle.
Taille de l'image La taille de l'image peut être évaluée de manière plus quantitative. Plus c'est petit, mieux c'est.
Mises à jour de sécurité Les mises à jour de sécurité varient selon la distribution du système d'exploitation, mais vous devez savoir combien de temps elles les prendront en charge.
Python est-il installé? Vous pouvez l'installer vous-même, mais cela vous fera gagner du temps et du temps de construction s'il est installé depuis le début.

Pour les distributions majeures

Il est très stable car vous pouvez vérifier la stabilité et la période de support des mises à jour de sécurité à l'aide d'une distribution standard. Cependant, il contient également de nombreux packages courants qui ne sont pas nécessaires pour exécuter des applications Python, et la taille de l'image a tendance à être importante. Vous devez également installer vous-même la dernière version de Python.

Pour Alpine Linux

Si vous souhaitez réduire l'image, alpine-linux peut être le premier candidat. Cependant, selon l'article lié ci-dessous, il semble que l'utilisation de l'alpine causera éventuellement divers problèmes tels qu'une capacité d'image accrue et un temps de construction accru. Using Alpine can make Python Docker builds 50× slower

Ce qui suit est un résumé du contenu mentionné dans l'article.

Par conséquent, alpine a une petite taille d'image, mais elle reste incertaine en tant qu'environnement d'exécution Python.

Image Python officielle de Docker

Lorsque vous utilisez Python avec Docker, je pense que beaucoup de gens utilisent essentiellement cette image. Les types de balises sont à peu près les suivants.

Type d'image La dernière balise précédente(2020/À partir du 03) Taille Remarques
alpine 3.8.1-alpine3.11 109MB Il y a aussi une image d'Alpine ici, mais elle n'est pas recommandée en raison des inconvénients mentionnés ci-dessus.
buster 3.8.1-buster 933MB Cette image est basée sur Buster, la dernière version de Debian. Ce n'est pas léger car de nombreux packages de base sont installés, mais c'est un bon choix pour une utilisation générale.
buster-slim 3.8.1-slim-buster 193MB Il s'agit d'une version dans laquelle le paquet commun de l'image Debian est omis et la taille de l'image est réduite en conséquence. Si vous n'utilisez que des applications Python, il ne semble y avoir aucun problème.

Si vous comparez les balises, vous pouvez voir qu'il existe une version slim en plus de l'image principale Debian. Il s'agit d'une image spécialisée pour exécuter Python, et il semble que de nombreuses autres fonctions aient été supprimées. Une note sur la page python-docker indiquait: «Utilisez slim si vous avez des restrictions de taille d'image strictes pour l'exécution de Python uniquement, et nous recommandons l'image par défaut dans le cas contraire. Le choix dépend de la distance que vous souhaitez parcourir dans le conteneur.

Conclusion

À partir des résultats ci-dessus, nous sommes arrivés à la conclusion que l'image Docker appropriée pour exécuter des applications Python est simplement Debian Buster slim. La taille de l'image est de 198 Mo, ce qui est assez compact.

Recommended Posts

Image de conteneur recommandée pour les applications Python
Notes personnelles pour le traitement d'images python
Essayez docker: créez votre propre image de conteneur pour une application Web Python
Inject est recommandé pour DDD en Python
30/10/2016 else pour Python3> pour:
python [pour moi]
traitement d'image python
Recommandé pour get_or_new
Modèle pour créer des applications de ligne de commande en Python
Traitement d'image? L'histoire du démarrage de Python pour
Traitement d'image avec la configuration de l'environnement Python pour Windows
À propos de Python for loop
Script Python de collection d'images pour créer des ensembles de données pour l'apprentissage automatique
Bases de Python ② pour déclaration
Premier traitement d'image Python
À propos de Python, pour ~ (plage)
Format d'image en Python
Manuel python pour les débutants
Refactoring des outils utilisables avec Python
Toolchain pour Python pour Android
Traitement d'image avec Python
OpenCV pour les débutants en Python
Installez Python (pour Windows)
[Python] pour une erreur d'instruction
Programmez avec votre smartphone n'importe où! (Recommandé pour le langage C / Python)
Maintenance de l'environnement Python pour les projets
Exemple d'image du serveur d'API Python pour EC2 (AMI publique)
Comment implémenter Python EXE pour Windows avec le conteneur Docker
[Python] Accès et recadrage des pixels d'image à l'aide d'OpenCV (pour les débutants)
Traitement d'image avec Python (partie 2)
Mon conteneur d'analyse de données python
Mémo Python (pour moi): Array
Prise en charge de Fabric pour Python 3
Liste Python, pour instruction, dictionnaire
Python pour l'analyse des données Chapitre 4
Flux d'apprentissage pour les débutants en Python
Procédure d'installation de Python 3.6 [pour Windows]
Intégration BigQuery pour les utilisateurs Python
Plan d'apprentissage Python pour l'apprentissage de l'IA
Configurer pour Mac (Python)
Python: image de tableau 3D (numpy.array)
Distribution Linux recommandée pour les débutants
Mémo Python Tkinter (pour moi)
Installation d'OpenCV3 pour Python3 @macOS
Mémo de code personnel Python
Balise xmp [Python] pour les photos
Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
Construction de l'environnement Python pour Mac
Techniques de tri en Python
CNN (1) pour la classification des images (pour les débutants)
pp4 (puissance python pour tout)
Traitement d'image avec Python (partie 1)
Construction de l'environnement Python3 (pour les débutants)
Tweet avec image en Python
Tri des fichiers image avec Python