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_IDdocker 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' -voption 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 runligne de commande? J'en ai besoin en tant que service permanent (24 heures)
runexécute une imagestartdémarre un conteneur .Le docker rundoc mentionne:
La
docker runcommande 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/createalors/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 runun 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 runet startde 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 )
runcrée un conteneur à partir de l'image, puis démarre le processus racine sur ce conteneur. L'exécuter avec un run --rmdrapeau vous éviterait de retirer le conteneur mort inutile par la suite et vous permettrait d'ignorer l'existence de docker startet docker removetout à fait.
run commande fait quelques choses différentes:
docker run --name dname image_name bash -c "whoami"
docker psbash -c "whoami". Si l'on s'exécute docker run --name dname image_namesans commande pour exécuter le conteneur, il se mettra immédiatement à l'arrêt.docker removeavant de lancer le conteneur sous le même nom.Comment retirer le conteneur une fois qu'il est arrêté automatiquement?Ajoutez un --rmindicateur à la runcommande:
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 --detachedflag 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 stopalors? Pour arrêter ce conteneur persistant que nous avons lancé dans l'extrait précédent avec la commande sans fintail -f /dev/null.