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

En pratique pour démarrer un conteneur que je fais:

docker run a8asd8f9asdf0 

Si c’est le cas, qu’est-ce qui fait:

 docker start 

faire?

Dans le manuel il est dit

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

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

  1. Exécuter: crée un nouveau conteneur d’une image et exécute le conteneur. Vous pouvez créer N clones de la même image. La commande est la suivante: docker run IMAGE_ID et pas docker run CONTAINER_ID

entrer la description de l'image ici

  1. Démarrer: Lancer un conteneur précédemment arrêté. Par exemple, si vous avez arrêté une firebase database 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 parameters seront les mêmes.

entrer la description de l'image ici

  • run exécute une image
  • start démarre un conteneur .

Le docker run doc mentionne:

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

C’est-à-dire que Docker Run est équivalent à l’API /containers/create then /containers/(id)/start .

Vous ne lancez pas un conteneur existant, vous docker exec (depuis le docker 1.3) .
Vous pouvez redémarrer un conteneur sorti .

Explication avec un exemple:

Considérez que vous avez une image de jeu (iso) dans votre ordinateur.

Lorsque vous “exécutez” (montez votre image en tant que lecteur virtuel), un lecteur virtuel est créé avec tous les contenus du jeu dans le lecteur virtuel et le fichier d’installation du jeu est automatiquement lancé. [Exécuter votre image de docker – créer un conteneur puis le démarrer.]

Mais lorsque vous “l’arrêtez” (similaire à docker stop), 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 “démarrez” (similaire à docker start), à partir du lecteur virtuel, les fichiers de jeux commencent leur 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