web-dev-qa-db-fra.com

Différence entre l'exécution et le démarrage d'un conteneur Docker

En pratique pour commencer un conteneur que je fais:

docker run a8asd8f9asdf0

Si c'est le cas, que fait-on:

docker start

faire?

Dans le manuel, il est dit

Démarrer un ou plusieurs conteneurs arrêtés

230
mskw

C'est une question très importante et la réponse est très simple, mais fondamentale:

  1. Exécuter: créez un nouveau conteneur d'image et exécutez-le. Vous pouvez créer N clones de la même image. La commande est la suivante: docker run IMAGE_ID et non docker run CONTAINER_ID

enter image description here

  1. Démarrer: lance un conteneur précédemment arrêté. Par exemple, si vous avez arrêté une base de données avec la commande 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 identiques.

enter image description here

253
daniele3004
  • run lance une image
  • start démarre un conteneur .

Le docker run doc mentionne:

La commande docker run crée d'abord un calque de conteneur inscriptible sur l'image spécifiée, puis le démarre à l'aide de la commande spécifiée.

C'est-à-dire que l'exécution du menu fixe est équivalente à l'API /containers/create puis /containers/(id)/start.

Vous ne pas exécuter un conteneur existant, vous docker l'exec (depuis docker 1.3) .
Vous pouvez redémarrer un conteneur abandonné .

90
VonC

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 lancé automatiquement. [Exécution de l’image de votre menu fixe - création d’un conteneur, puis démarrage de celui-ci.]

Mais lorsque vous stop (semblable à l'arrêt du menu fixe), le lecteur virtuel existe toujours, mais il arrête tous les processus. [Comme le conteneur existe jusqu'à ce qu'il ne soit pas supprimé]

Et lorsque vous faites start (comme au début du menu fixe), à ​​partir du lecteur virtuel, les fichiers de jeu commencent à être exécutés. [démarrer le conteneur existant]

Dans cet exemple, l’image de jeu correspond à votre image Docker et le lecteur virtuel à votre conteneur.

14
Apb

La réponse de daniele3004 est déjà très bonne.

Juste une formule rapide et sale pour les personnes comme moi qui mélangent run et start de temps en temps:

docker run [...] = docker pull [...] + docker start [...]

5
Bowen