J'essaye docker pour la première fois et je n'ai pas encore de "modèle mental". Débutant total.
Tous les exemples que je regarde ont inclus le --rm
drapeau à exécuter, tel que
docker run -it --rm ...
docker container run -it --rm ...
Question:
Pourquoi ces commandes incluent-elles le --rm
drapeau? Je penserais que si je devais passer par la peine de configurer ou de télécharger un conteneur avec les bonnes choses, pourquoi le supprimer? Je veux le garder pour l'utiliser à nouveau.
Donc, je sais que j'ai une fausse idée du docker.
docker
docker-container
matchmoments
la source
la source
--rm
supprime le conteneur arrêté (celuidocker run
créé), pas l'image sur laquelle il était basé (ce que vous avez téléchargé).docker run --help
devrait être utile. Si vous ne voulez pas supprimer le conteneur , vous pouvez le passer--rm
et c'est pour nettoyer automatiquement le conteneur et supprimer le système de fichiers lorsque le conteneur sort et cela ne signifie pas retirer les choses du conteneur.Réponses:
Les conteneurs sont simplement une instance de l'image que vous utilisez pour les exécuter. L'état d'esprit lors de la création d'une application conteneurisée n'est pas de prendre un conteneur ubuntu frais et propre, par exemple, et de télécharger les applications et les configurations que vous souhaitez y inclure, puis de le laisser s'exécuter.
Vous devez traiter le conteneur comme une instance de votre application, mais votre application est incorporée dans une image. L'utilisation appropriée serait de créer une image personnalisée, dans laquelle vous intégrez tous vos fichiers, configurations, variables d'environnement, etc., dans l'image. En savoir plus sur Dockerfile et comment cela se fait ici
Une fois que vous avez fait cela, vous avez une image qui contient tout, et pour utiliser votre application, il vous suffit d'exécuter l'image avec les paramètres de port appropriés ou d'autres variables dynamiques, en utilisant
docker run <your-image>
Exécuter des conteneurs avec un
--rm
indicateur est bon pour les conteneurs que vous utilisez pendant très peu de temps juste pour accomplir quelque chose, par exemple, compiler votre application dans un conteneur, ou simplement tester quelque chose qui fonctionne, et vous savez alors que c'est un conteneur de courte durée et vous dites à votre démon Docker qu'une fois son exécution terminée, effacez tout ce qui y est lié et économisez de l'espace disque.la source
--rm
lorsque l'utilisateur ferme la fenêtre du terminal. c'est à dire pas délibérément exécutéexit
dans le shell du conteneur, mais ferme simplement la fenêtre GUI du terminal. J'ai remarqué que les conteneurs ne sont pas supprimés dans ce cas.L'indicateur
--rm
est utilisé lorsque vous avez besoin que le conteneur soit supprimé une fois la tâche terminée.Cela convient aux petits tests ou à des fins de POC et évite les maux de tête pour les tâches ménagères.
la source
depuis https://docs.docker.com/engine/reference/run/#clean-up---rm
En bref: il est utile de garder l'hôte propre des conteneurs arrêtés et non utilisés.
la source
J'utilise
--rm
lors de la connexion à des conteneurs en cours d'exécution pour effectuer certaines actions telles que la sauvegarde de la base de données ou la copie de fichiers. Voici un exemple:docker run -v $(pwd):/mnt --link app_postgres_1:pg --rm postgres:9.5 pg_dump -U postgres -h pg -f /mnt/docker_pg.dump1 app_db
Ce qui précède connectera un conteneur en cours d'exécution nommé 'app_postgres_1' et créera une sauvegarde. Une fois la commande de sauvegarde terminée, le conteneur est entièrement supprimé.
la source