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.
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. |
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.
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.
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.
À 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