Je lance un conteneur docker à partir d'une image avec la commande suivante:
$ docker run -d myimage /bin/bash -c "mycommand"
Quand "mycommand"
c'est fini, le conteneur est arrêté (je suppose qu'il est arrêté), mais il n'est pas supprimé, car je peux le voir avec cette commande:
$ docker ps -a
Existe-t-il un moyen d'accéder à restart
ce conteneur avec les mêmes paramètres et de conserver les données générées par mycommand
?
Réponses:
Oui, lorsque la commande initiale a terminé son exécution, le conteneur s'arrête.
Vous pouvez démarrer un conteneur arrêté en utilisant:
docker start container_name
Si vous souhaitez voir la sortie de votre commande, vous devez ajouter des
-ai
options:docker start -ai container_name
PS. il y a un
docker restart container_name
mais qui est utilisé pour redémarrer un conteneur en cours d'exécution - je pense que ce n'est pas votre cas.la source
docker exec -it container_name bash
. Lorsque j'ai exécuté la commande depuis l'intérieur du conteneur, j'ai pu voir pourquoi l'implémentation initiale de mon script échouait et je l'ai corrigée.start
avecsleep
? Je ne peux pas arriver à un point où je peux courirexec
Tout d'abord,
$ docker ps -a
affiche tous les conteneurs (ceux qui sont en cours d'exécution et ceux qui sont arrêtés), c'est pourquoi vous ne voyez pas votre conteneur arrêté dans la liste.Deuxièmement, vous pouvez facilement démarrer un conteneur arrêté en cours d'exécution:
Une fois le conteneur démarré, vous pouvez exécuter votre commande en:
Les éléments que vous créez dans votre conteneur resteront à l'intérieur de votre conteneur tant qu'il existe. Si vous souhaitez conserver des données même si votre conteneur est supprimé, vous pouvez utiliser un volume .
la source
Ça devrait être
la source
restart
s'agit d'un conteneur déjà en cours d'exécution