Kapsayıcı adından docker kapsayıcı kimliğini alın


117

Docker kapsayıcı kimliğini kapsayıcı adından alma komutu nedir?


4
Şu anda deniyorum, çevrimiçi herhangi bir örnek bulamadım. oy verdiğiniz için teşekkürler, mutlu insanları severim.
Dimitri Kopriwa

Nasıl Sorulur bölümünü okumalı ve tekrarlanabilir minimum bir örnek sağlamalısınız . docker --listVeya benzeri nasıl görünüyor? Yeni bir kap oluşturma komutu nedir? vb
fedorqui

1
Sorumun oldukça açık olduğunu düşünüyorum, lütfen oy verin En kısa sürede cevabı vereceğim.
Dimitri Kopriwa

1
Bash'de bildiğim "kapsayıcı" diye bir şey yok. Belki de liman işçisi konteynerlerini kastediyorsunuz ? Öyleyse, "bash" etiketini izleyen kişilerin kafası karışabilir. ancak konteyner kimliğini adından alırsınız, eminim bu gerçek bir komuttur ve bash programlama diliyle ilgisi yoktur.
djhaskin987

Yanıtlar:


206

Linux'ta:

sudo docker ps -aqf "name=containername"

Veya OS X, Windows'ta:

docker ps -aqf "name=containername"

containernamekapsayıcı adınız nerede .

@Llia Sidorenko'nun belirttiği gibi yanlış pozitifler almamak için normal ifade bağlantılarını şu şekilde kullanabilirsiniz:

docker ps -aqf "name=^containername$"

açıklama:

  • -qsessizlik için. sadece kimliği çıkar
  • -ahepsi için. kapsayıcınız çalışmasa bile çalışır
  • -fiçin filtre .
  • ^kapsayıcı adı bu dizeyle başlamalıdır
  • $kapsayıcı adı bu dizeyle bitmelidir

7
Buna rastlayan herkese bir not: kendinizi docker grubuna eklerseniz linux üzerinde sudo artık gerekli değildir (şiddetle tavsiye edilir)
code_monk

9
Lütfen bu yanıta dikkat edin, çünkü ad = içerme adı aslında bir joker karakterdir ve adı (. *)
İçeren

5
@ekkis --no-truncbayrağı kullanır . sodocker ps --no-trunc -aqf "name=containername"
code_monk

3
2019-01-07 itibariyle, bu benim için işe yaramadı. Docker v17.06.0 kullanıyorum. Komut docker inspect --format="{{.Id}}" imageNamebenim için çalıştı.
PatS

1
@code_monk, Onay için teşekkürler. Fikri nereden aldığım Rosberg Linhares cevabına bir yorum ekledim ve cevabının doğru cevaba değiştirilmesini önerdim.
PatS

40

Bunu deneyebilirsiniz:

docker inspect --format="{{.Id}}" container_name

Bu yaklaşım işletim sisteminden bağımsızdır.


5
Bu, IMAGE ID NOT CONTAINER ID
değerini

2
@vijay, benim için bu konteyner kimliğini veriyor: https://i.ibb.co/BPwyxDj/Docker-Container-Id.png
Rosberg Linhares

Bu ayrıca bana konteyner kimliğini de veriyor. Tam kapsayıcı kimliği, yalnızca kesilen ilk 12 karakter değil.
cowlinator

Bunu sevdim! Teşekkürler. 👍
GollyJer

@vijay @RosbergLinhares, konteynerin adını ( NAMESsütununda verilen) sağlarsanız docker ps, konteyner kimliğini verir. Bunun yerine görüntü adı ( IMAGEile sütunda verilir docker ps) sağlanırsa, bunun yerine görüntü kimliğini verir.
Wolfson

13
  1. Çalışan kapsayıcıların kapsayıcı kimliklerini alın:

    $docker ps -qf "name=IMAGE_NAME"
    
        -f: Filter output based on conditions provided
        -q: Only display numeric container IDs
    
  2. Tüm kapsayıcıların kapsayıcı kimliklerini alın:

    $docker ps -aqf "name=IMAGE_NAME"
    
        -a: all containers
    

2
docker ps -fq işe yaramadı ancak işe docker ps -qfyaradı (bayrakların sırası)
thom_nic

5

Aşağıdaki komut:

docker ps --format 'CONTAINER ID : {{.ID}} | Name: {{.Names}} | Image:  {{.Image}} |  Ports: {{.Ports}}'

Bu çıktıyı verir:

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`

3

Kapsayıcı adına göre tam ContainerId almak istiyorsanız, aşağıdaki komutu kullanın

 docker ps --no-trunc -aqf name=containername

0

Docker görüntüsünü inceleyin ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}


Lütfen cevabınıza bir açıklama ekleyin. Yalnızca kod olan yanıtlar (veya bu durumda yalnızca komut), komutun veya kodun gerçekte ne yaptığını anlamayan yeni kullanıcılar için yararlı değildir. Bunun neden kötü olduğunu anlamak için kargo kült programlamasına bakın.
Max Vollmer

0

Benim durumumda Ubuntu 20.04'te Tensorflow Docker konteynerini çalıştırıyordum: Docker konteynerinizi One terminalde çalıştırın,

docker run -it od

Ve sonra başka bir terminal başlattı ve docker pssudo ile aşağıya koştu :

sudo docker ps

Kapsayıcı kimliğini başarıyla aldım:

CONTAINER ID        IMAGE               COMMAND             CREATED             
STATUS              PORTS               NAMES
e4ca1ad20b84        od                  "/bin/bash"         18 minutes ago      
Up 18 minutes                           unruffled_stonebraker

-2

Düşünebileceğim en basit yol, çıktısını ayrıştırmaktır. docker ps

En son ubuntu görüntüsünü etkileşimli olarak çalıştıralım ve ona bağlanalım

docker run -it ubuntu /bin/bash

Eğer çalıştırırsanız docker psbaşka terminalde gibi bir şey görebilirsiniz

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
8fddbcbb101c        ubuntu:latest       "/bin/bash"         10 minutes ago      Up 10 minutes                           gloomy_pasteur

Maalesef, bu biçimi ayrıştırmak kolay değil, çünkü malzemeleri manuel olarak hizalamak için boşluk kullanıyorlar

$ 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@@@@@@

İşte çıktıyı JSON'a dönüştüren bir betik.

https://gist.github.com/mminer/a08566f13ef687c17b39

Aslında, çıktıyla çalışmak bundan biraz daha uygun. Her alan 20 karakter genişliğindedir. [['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.