37 votes

Commande Docker exec sans l'ID du conteneur

Comment faire quelque chose comme.. :

docker exec -it 06a0076fb4c0  install-smt

Mais utilisez plutôt le nom du conteneur

docker exec -it container/container  install-smt

J'exécute une compilation sur un serveur CI et je ne peux donc pas saisir manuellement l'ID du conteneur.

Comment y parvenir ?

35voto

TJ Biddle Points 584

Oui, vous pouvez le faire en nommant le conteneur avec --name . Notez que votre commande avec container/container fait probablement référence à un nom de l'image et non le conteneur.

➜  ~ docker run --name my_nginx -p 80:80 -d nginx
d122acc37d5bc2a5e03bdb836ca7b9c69670de79063db995bfd6f66b9addfcac

➜  ~ docker exec my_nginx hostname
d122acc37d5b

15voto

Malvineous Points 2416

Bien que cela ne permette pas d'économiser de la frappe, vous pouvez faire quelque chose comme cela si vous voulez utiliser le nom de l'image au lieu de donner un nom au conteneur :

docker run debian
docker exec -it `docker ps -q --filter ancestor=debian` bash

Cela ne fonctionnera que si vous n'exécutez qu'une seule instance de l'application debian image.

Il est utile de modifier constamment l'image lorsque vous travaillez sur un nouveau projet. Dockerfile et de vouloir exécuter plusieurs fois la même commande dans chaque nouveau conteneur pour vérifier que les changements ont été effectués comme prévu.

5voto

johnnyshrewd Points 166

J'ai pu résoudre ce problème en définissant un nom de conteneur dans le fichier docker-compose, et en lançant docker exec -it avec le nom du fichier.

@Héctor (tnx)

1voto

Peter Teoh Points 1001

Ces étapes ont fonctionné pour moi :

Cette opération démarre le conteneur nommé mytapir et créer un shell dans le conteneur docker :

docker run -d --name mytapir -it wsmoses/tapir-built:latest bash

Sur docker ps pour s'assurer que le conteneur Docker est en cours d'exécution :

docker exec -it mytapir /bin/bash

L'utilisateur créera un shell dans un conteneur existant nommé mytapir .

Et vous pouvez arrêter le conteneur comme d'habitude docker stop mytapir .

Et en commençant par docker start mytapir s'il n'est pas en cours d'exécution.

(vérification via docker ps -a )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X