J'essaye en ce moment, je n'ai trouvé aucun échantillon en ligne. merci d'avoir voté contre, j'aime les gens heureux.
Dimitri Kopriwa
Vous devriez lire Comment demander et fournir un exemple reproductible minimal . À quoi ressemble docker --listou similaire? Quelle est la commande pour créer un nouveau conteneur? etc
fedorqui 'Alors arrêtez de nuire'
1
Je pense que ma question est assez claire, merci de voter, je donnerai la réponse dès que possible.
Dimitri Kopriwa
1
Il n'y a pas de "conteneur" que je connaisse dans bash. Peut-être voulez-vous dire des conteneurs docker ? Si tel est le cas, les personnes qui regardent la balise "bash" peuvent être confuses. Cependant, vous obtenez l'identifiant du conteneur à partir du nom, je suis sûr que c'est une commande réelle et n'a rien à voir avec le langage de programmation bash.
djhaskin987
Réponses:
191
Sous Linux:
sudo docker ps -aqf "name=containername"
Ou sous OS X, Windows:
docker ps -aqf "name=containername"
où containernameest le nom de votre conteneur.
Pour éviter d'obtenir de faux positifs, comme le note @llia Sidorenko, vous pouvez utiliser des ancres regex comme ceci:
docker ps -aqf "name=^containername$"
explication:
-qpour le calme. afficher uniquement l'ID
-apour tous. fonctionne même si votre conteneur n'est pas en cours d'exécution
une note à tous ceux qui trébuchent sur ceci: sudo n'est plus nécessaire sur linux si vous vous ajoutez au groupe docker (fortement recommandé)
code_monk
9
Veuillez faire attention à cette réponse, car name = containername est en fait un caractère générique et il correspondra à tout ce qui porte le nom (. *) Containername (. *)
Ilia Sidorenko
5
@ekkis utilise le --no-truncdrapeau. sodocker ps --no-trunc -aqf "name=containername"
code_monk
3
À partir du 07/01/2019, cela n'a pas fonctionné pour moi. J'utilise docker v17.06.0. La commande a docker inspect --format="{{.Id}}" imageNamefonctionné pour moi.
PatS
1
@code_monk, merci pour la confirmation. J'ai ajouté un commentaire à la réponse de Rosberg Linhares, d'où j'ai eu l'idée, et j'ai suggéré que sa réponse soit remplacée par la bonne réponse.
PatS
37
Vous pouvez essayer ceci:
docker inspect --format="{{.Id}}" container_name
Cette approche est indépendante du système d'exploitation.
Cela me donne également l'ID du conteneur. L'ID de conteneur complet, pas seulement les 12 premiers caractères tronqués.
cowlinator
J'aime celui-ci! Merci. 👍
GollyJer
@vijay @RosbergLinhares si vous indiquez le nom du conteneur (indiqué dans la NAMEScolonne avec docker ps), il donne l'ID du conteneur. Si le nom de l'image (donné dans la IMAGEcolonne avec docker ps) est fourni à la place, il renvoie l'ID de l'image à la place.
Wolfson le
12
Obtenez les identifiants des conteneurs en cours d'exécution:
$docker ps -qf "name=IMAGE_NAME"
-f: Filter output based on conditions provided
-q: Only display numeric container IDs
Obtenez les identifiants de tous les conteneurs:
$docker ps -aqf "name=IMAGE_NAME"
-a: all containers
Veuillez ajouter une explication à votre réponse. Les réponses qui sont uniquement du code (ou dans ce cas, une commande uniquement) ne sont pas utiles pour les nouveaux utilisateurs qui pourraient ne pas comprendre ce que fait réellement la commande ou le code. Recherchez la programmation culte du fret pour savoir pourquoi c'est mauvais.
Max Vollmer
0
Dans mon cas, j'exécutais le conteneur Docker Tensorflow dans Ubuntu 20.04: Exécutez votre conteneur Docker dans un terminal, je l'ai exécuté avec
docker run -it od
Et puis commencé un autre terminal et exécuté ci-dessous docker psavec sudo:
sudo docker ps
J'ai réussi à obtenir l'identifiant du conteneur:
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
e4ca1ad20b84 od "/bin/bash" 18 minutes ago
Up 18 minutes unruffled_stonebraker
En fait, la sortie est un peu plus pratique à utiliser que cela. Chaque champ a une largeur de 20 caractères.
[['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]
docker --list
ou similaire? Quelle est la commande pour créer un nouveau conteneur? etcRéponses:
Sous Linux:
Ou sous OS X, Windows:
où
containername
est le nom de votre conteneur.Pour éviter d'obtenir de faux positifs, comme le note @llia Sidorenko, vous pouvez utiliser des ancres regex comme ceci:
explication:
-q
pour le calme. afficher uniquement l'ID-a
pour tous. fonctionne même si votre conteneur n'est pas en cours d'exécution-f
pour filtre .^
le nom du conteneur doit commencer par cette chaîne$
le nom du conteneur doit se terminer par cette chaînela source
--no-trunc
drapeau. sodocker ps --no-trunc -aqf "name=containername"
docker inspect --format="{{.Id}}" imageName
fonctionné pour moi.Vous pouvez essayer ceci:
Cette approche est indépendante du système d'exploitation.
la source
NAMES
colonne avecdocker ps
), il donne l'ID du conteneur. Si le nom de l'image (donné dans laIMAGE
colonne avecdocker ps
) est fourni à la place, il renvoie l'ID de l'image à la place.Obtenez les identifiants des conteneurs en cours d'exécution:
Obtenez les identifiants de tous les conteneurs:
la source
docker ps -fq
n'a pas fonctionné mais adocker ps -qf
fait (ordre des drapeaux)La commande suivante:
Donne cette sortie:
la source
Si vous souhaitez obtenir un ContainerId complet basé sur le nom du conteneur, utilisez la commande suivante
la source
Image Docker inspecter ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}
la source
Dans mon cas, j'exécutais le conteneur Docker Tensorflow dans Ubuntu 20.04: Exécutez votre conteneur Docker dans un terminal, je l'ai exécuté avec
Et puis commencé un autre terminal et exécuté ci-dessous
docker ps
avec sudo:J'ai réussi à obtenir l'identifiant du conteneur:
la source
Le moyen le plus simple auquel je puisse penser est d'analyser la sortie de
docker ps
Exécutons la dernière image ubuntu de manière interactive et connectons-y
Si vous exécutez
docker ps
dans un autre terminal, vous pouvez voir quelque chose commeMalheureusement, l'analyse de ce format n'est pas facile car ils utilisent des espaces pour aligner manuellement les éléments
Voici un script qui convertit la sortie en JSON.
https://gist.github.com/mminer/a08566f13ef687c17b39
En fait, la sortie est un peu plus pratique à utiliser que cela. Chaque champ a une largeur de 20 caractères.
[['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]
la source