4
votes

Docker run: comment exécuter Ubuntu: 16.04 sans commande?

Je veux essayer d'installer un programme à l'intérieur d'Ubuntu dans le docker,

Je lance donc directement depuis l'invite de commande

docker run --name ubuntu_test ubuntu:16.04
docker exec -it ubuntu_test bash

mais cela ne fonctionne pas , il dit que le conteneur ne fonctionne pas? comment puis-je exécuter le bash sans configurer de fichier docker? (J'ai essayé d'utiliser dockerfile, mais cela ne fonctionne pas à cause de problème d'installation interactive )

J'ai donc pensé que peut-être l'installer directement depuis le bash pourrait fonctionner.


0 commentaires

5 Réponses :


6
votes

Le problème est que votre commande ne maintient pas le processus en vie ni ne le garde en arrière-plan pour que le conteneur termine son travail et cesse de fonctionner. C'est comme docker run hello-world qui imprime des trucs et quitte.

docker run -it --name ubuntu_test ubuntu: 16.04 fonctionnera pour vous. La documentation explique:

Pour les processus interactifs (comme un shell), vous devez utiliser -i -t ensemble afin d'allouer un tty pour le processus conteneur. -i -t est souvent écrit -it

Une alternative serait d'exécuter le conteneur en mode détaché (-d) et de lui donner une commande longue pour qu'il ne se ferme pas immédiatement:

docker run --name ubuntu_test -d ubuntu: 16.04 sleep 300 docker exec -it ubuntu_test bash


0 commentaires

0
votes

Cela devrait fonctionner:

docker run --rm -it --name ubuntu_test -d ubuntu:16.04 
docker exec -it ubuntu_test /bin/bash


0 commentaires

1
votes

Lorsque vous exécutez un conteneur, vous pouvez passer une commande à la fin de la commande qui devrait s'exécuter, comme:

docker run --name ubuntu_test -it --entrypoint bash ubuntu:16.04

S'il y a un point d'entrée spécifié dans Dockerfile, vous devez remplacer le point d'entrée:

docker run --name ubuntu_test -it ubuntu:16.04 bash


0 commentaires

1
votes

Je ne suis pas sûr, vous êtes sur la bonne voie avec l'installation dans l'image en cours d'exécution. Ce n'est pas pratique car non automatisé - la prochaine fois que vous aurez besoin de votre image, vous devrez refaire toutes les étapes et il n'y a aucun moyen de les enregistrer.

Je suggérerais plutôt d'essayer de résoudre le problème du programme d'installation interactif, vous n'êtes pas le premier à y faire face. Il existe de nombreuses façons, y compris le programme yes , qui génère automatiquement une réponse prédéfinie aux questions de l'installateur ou vous pouvez simplement utiliser echo pour envoyer le résultat à l'installateur.


0 commentaires

4
votes

Vous ne parvenez pas à démarrer le conteneur. Essayez ceci:

docker exec -it 82d0bb7754e7 /bin/bash

-i, --interactive - Gardez STDIN ouvert même s'il n'est pas attaché

-t, --tty - Attribue un pseudo-TTY

-d, --detach - Exécute le conteneur en arrière-plan et affiche l'ID du conteneur

Après cette commande listez tous vos conteneurs ( docker ps ):

 entrez la description de l'image ici

Vous pouvez maintenant vous attacher à votre conteneur en cours d'exécution et faire certaines choses:

docker run -itd ubuntu:16.04 bash

(dans ce cas, pour indiquer le conteneur que j'ai utilisé l'ID, vous pouvez également utiliser le nom du conteneur )


0 commentaires