J'ai une image docker dajobe/hbase et elle a été construite à partir d'Ubuntu. J'ai créé un conteneur de cette image et l'ai nommé hb.
$ docker run -d --name hb dajobe/hbase
e1f68ff8b3b6c5e474426e2566f8c087d6a785fc5eeb58cd2aeb86176068651d
J'ai ensuite démarré le répertoire/bin/bash sur hb et vérifié la disponibilité de l'éditeur vi.
$ docker exec -it hb /bin/bash
root@e1f68ff8b3b6:/# vi
bash: vi: command not found
J'ai ensuite installé vi editor en utilisant apt-get
# apt-get install vim
Reading package lists...
DoneBuilding dependency tree
Reading state information... Done
.....
.....
Je voulais valider les modifications afin que l'éditeur v puisse persister.
$ docker commit hb dajobe/hbase
1be196188efc5a52562dc8ee1b63d0fd560ea163c49331c10dc435848d75ef64
puis, lorsque j’ai de nouveau lancé dajobe/hbase, il s’est automatiquement arrêté.
$ docker run -d --name hb dajobe/hbase
c3e7b9f48077ef854efc6f9bab5e85986e265c98de5423bece0000c973206c38
$ docker exec -it hb /bin/bash
FATA[0000] Error response from daemon: Container hb is not running
Pourquoi le conteneur ne fonctionne-t-il pas?
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3e7b9f48077 dajobe/hbase:latest "/opt/hbase-server" 11 secs ago Exited (0) 8 secs ago hb
Pourquoi le statut est "Exited"? Avant de s'engager, ce n'était pas le cas, le statut était "Up".
Je m'attendrais à ce que le statut soit Exited. Peut-être que l'image originale que vous utilisiez avait un ENTRYPOINT qui faisait en sorte que le conteneur continue à fonctionner pendant que vous l'exécutiez. Vous pouvez essayer ceci:
docker run -d --name hb dajobe/hbase sleep 60
Ensuite, essayez votre exec, pour les 60 prochaines secondes, vous vous connecterez avec votre Shell interactif. Après cela, vous recevrez à nouveau le même message.
Le -d transforme le conteneur en démon. Cependant, il faut que quelque chose soit fait, sinon cela se termine! Avez-vous essayé de faire la ligne de conduite avec le -it?
docker run -it --name hb dajobe/hbase bash
Vous y trouverez également une invite du shell, où vous pourrez effectuer les mises à jour de l’image.
-g