En pratique, pour démarrer un conteneur, je fais:
docker run a8asd8f9asdf0
Si tel est le cas, que signifie:
docker start
faire?
Dans le manuel, il est dit
Démarrer un ou plusieurs conteneurs arrêtés
execute
?
En pratique, pour démarrer un conteneur, je fais:
docker run a8asd8f9asdf0
Si tel est le cas, que signifie:
docker start
faire?
Dans le manuel, il est dit
Démarrer un ou plusieurs conteneurs arrêtés
execute
?
Réponses:
C'est une question très importante et la réponse est très simple, mais fondamentale:
docker run IMAGE_ID
et non docker run CONTAINER_ID
docker stop CONTAINER_ID
, vous pouvez relancer le même conteneur avec la commande docker start CONTAINER_ID
, et les données et les paramètres seront les mêmes.docker rm container_id
). D'autre part, les données de volumes survivent à la suppression du conteneur, sauf si l' -v
option est explicitement fournie sur la ligne de commande. L'emplacement du volume sur le système hôte peut être directement inspecté. Voir cet article
&
à la fin de la run
ligne de commande? J'en ai besoin en tant que service permanent (24 heures)
run
exécute une imagestart
démarre un conteneur .Le docker run
doc mentionne:
La
docker run
commande crée d' abord une couche conteneur inscriptible sur l'image spécifiée, puis la démarre à l'aide de la commande spécifiée.C'est, docker terme est équivalent à l'API
/containers/create
alors/containers/(id)/start
.
Vous n'exécutez pas un conteneur existant, vous l'exécutez avec docker (depuis docker 1.3) .
Vous pouvez redémarrer un conteneur quitté .
-i
à docker run
un processus interactif? Je veux dire, docker run a besoin d'une image pour exécuter un conteneur.
Explication avec un exemple:
Considérez que vous avez une image de jeu (iso) sur votre ordinateur.
Lorsque vous run
(montez votre image en tant que lecteur virtuel), un lecteur virtuel est créé avec tout le contenu du jeu dans le lecteur virtuel et le fichier d'installation du jeu est automatiquement lancé. [Exécution de votre image Docker - création d'un conteneur, puis démarrage.]
Mais lorsque vous stop
(semblable à l'arrêt Docker), le lecteur virtuel existe toujours mais arrête tous les processus. [Comme le conteneur existe jusqu'à ce qu'il ne soit pas supprimé]
Et lorsque vous le faites start
(similaire à Docker Start), à partir du lecteur virtuel, les fichiers de jeux commencent son exécution. [démarrage du conteneur existant]
Dans cet exemple - L'image du jeu est votre image Docker et le lecteur virtuel est votre conteneur.
La réponse de daniele3004 est déjà assez bonne.
Juste une formule rapide et sale pour des gens comme moi qui se mélangent run
et start
de temps en temps:
docker run [...]
= docker pull [...]
+docker start [...]
"...docker run is equivalent to the API /containers/create then /containers/(id)/start.
(source: docs.docker.com/engine/reference/commandline/run )
run
crée un conteneur à partir de l'image, puis démarre le processus racine sur ce conteneur. L'exécuter avec un run --rm
drapeau vous éviterait de retirer le conteneur mort inutile par la suite et vous permettrait d'ignorer l'existence de docker start
et docker remove
tout à fait.
run
commande fait quelques choses différentes:
docker run --name dname image_name bash -c "whoami"
docker ps
bash -c "whoami"
. Si l'on s'exécute docker run --name dname image_name
sans commande pour exécuter le conteneur, il se mettra immédiatement à l'arrêt.docker remove
avant de lancer le conteneur sous le même nom.Comment retirer le conteneur une fois qu'il est arrêté automatiquement?Ajoutez un --rm
indicateur à la run
commande:
docker run --rm --name dname image_name bash -c "whoami"
Comment exécuter plusieurs commandes dans un seul conteneur?En empêchant ce processus racine de mourir. Cela peut être fait en exécutant une commande inutile au début avec --detached
flag puis en utilisant "execute" pour exécuter des commandes réelles:
docker run --rm -d --name dname image_name tail -f /dev/null
docker exec dname bash -c "whoami"
docker exec dname bash -c "echo 'Nnice'"
Pourquoi avons-nous besoin docker stop
alors? Pour arrêter ce conteneur persistant que nous avons lancé dans l'extrait précédent avec la commande sans fintail -f /dev/null
.