Quelle est la commande pour obtenir l'ID du conteneur Docker à partir du nom du conteneur?
docker --list
ou similaire? Quelle est la commande pour créer un nouveau conteneur? etc
Quelle est la commande pour obtenir l'ID du conteneur Docker à partir du nom du conteneur?
docker --list
ou similaire? Quelle est la commande pour créer un nouveau conteneur? etc
Réponses:
Sous Linux:
sudo docker ps -aqf "name=containername"
Ou sous OS X, Windows:
docker ps -aqf "name=containername"
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:
docker ps -aqf "name=^containername$"
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îne--no-trunc
drapeau. sodocker ps --no-trunc -aqf "name=containername"
docker inspect --format="{{.Id}}" imageName
fonctionné pour moi.
Vous pouvez essayer ceci:
docker inspect --format="{{.Id}}" container_name
Cette approche est indépendante du système d'exploitation.
NAMES
colonne avec docker ps
), il donne l'ID du conteneur. Si le nom de l'image (donné dans la IMAGE
colonne avec docker ps
) est fourni à la place, il renvoie l'ID de l'image à la place.
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
docker ps -fq
n'a pas fonctionné mais a docker ps -qf
fait (ordre des drapeaux)
La commande suivante:
docker ps --format 'CONTAINER ID : {{.ID}} | Name: {{.Names}} | Image: {{.Image}} | Ports: {{.Ports}}'
Donne cette sortie:
CONTAINER ID : d8453812a556 | Name: peer0.ORG2.ac.ae | Image: hyperledger/fabric-peer:1.4 | Ports: 0.0.0.0:27051->7051/tcp, 0.0.0.0:27053->7053/tcp
CONTAINER ID : d11bdaf8e7a0 | Name: peer0.ORG1.ac.ae | Image: hyperledger/fabric-peer:1.4 | Ports: 0.0.0.0:17051->7051/tcp, 0.0.0.0:17053->7053/tcp
CONTAINER ID : b521f48a3cf4 | Name: couchdb1 | Image: hyperledger/fabric-couchdb:0.4.15 | Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5985->5984/tcp
CONTAINER ID : 14436927aff7 | Name: ca.ORG1.ac.ae | Image: hyperledger/fabric-ca:1.4 | Ports: 0.0.0.0:7054->7054/tcp
CONTAINER ID : 9958e9f860cb | Name: couchdb | Image: hyperledger/fabric-couchdb:0.4.15 | Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp
CONTAINER ID : 107466b8b1cd | Name: ca.ORG2.ac.ae | Image: hyperledger/fabric-ca:1.4 | Ports: 0.0.0.0:7055->7054/tcp
CONTAINER ID : 882aa0101af2 | Name: orderer1.o1.ac.ae | Image: hyperledger/fabric-orderer:1.4 | Ports: 0.0.0.0:7050->7050/tcp`enter code here`
Si vous souhaitez obtenir un ContainerId complet basé sur le nom du conteneur, utilisez la commande suivante
docker ps --no-trunc -aqf name=containername
Image Docker inspecter ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}
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 ps
avec 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
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
docker run -it ubuntu /bin/bash
Si vous exécutez docker ps
dans un autre terminal, vous pouvez voir quelque chose comme
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fddbcbb101c ubuntu:latest "/bin/bash" 10 minutes ago Up 10 minutes gloomy_pasteur
Malheureusement, l'analyse de ce format n'est pas facile car ils utilisent des espaces pour aligner manuellement les éléments
$ sudo docker ps | sed -e 's/ /@/g'
CONTAINER@ID@@@@@@@@IMAGE@@@@@@@@@@@@@@@COMMAND@@@@@@@@@@@@@CREATED@@@@@@@@@@@@@STATUS@@@@@@@@@@@@@@PORTS@@@@@@@@@@@@@@@NAMES
8fddbcbb101c@@@@@@@@ubuntu:latest@@@@@@@"/bin/bash"@@@@@@@@@13@minutes@ago@@@@@@Up@13@minutes@@@@@@@@@@@@@@@@@@@@@@@@@@@gloomy_pasteur@@@@@@
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]]