Dapatkan ID kontainer buruh pelabuhan dari nama kontainer

112

Apa perintah untuk mendapatkan ID kontainer buruh pelabuhan dari nama kontainer?

Dimitri Kopriwa
sumber
4
Saya mencoba sekarang, tidak dapat menemukan sampel apa pun secara online. terima kasih telah memilih, saya suka orang yang bahagia.
Dimitri Kopriwa
Anda harus membaca Cara Bertanya dan memberikan contoh minimal yang dapat direproduksi . Bagaimana docker --listatau mirip seperti itu? Apa perintah untuk membuat penampung baru? dll
fedorqui 'JADI berhenti merugikan'
1
Saya pikir pertanyaan saya cukup jelas, mohon pilih Saya akan memberikan jawabannya secepatnya.
Dimitri Kopriwa
1
Tidak ada yang namanya "wadah" yang saya tahu di bash. Mungkin maksud Anda kontainer buruh pelabuhan ? Jika demikian, orang yang menonton tag "bash" mungkin akan bingung. bagaimanapun Anda mendapatkan id kontainer dari namanya, saya yakin itu adalah perintah yang sebenarnya dan tidak ada hubungannya dengan bahasa pemrograman bash.
djhaskin987

Jawaban:

196

Di Linux:

sudo docker ps -aqf "name=containername"

Atau di OS X, Windows:

docker ps -aqf "name=containername"

dimana containernamenama container anda.

Untuk menghindari kesalahan positif, seperti yang dicatat @llia Sidorenko, Anda dapat menggunakan jangkar regex seperti ini:

docker ps -aqf "name=^containername$"

penjelasan:

  • -quntuk diam. hanya mengeluarkan ID
  • -auntuk semua. berfungsi bahkan jika penampung Anda tidak berjalan
  • -funtuk filter .
  • ^nama kontainer harus dimulai dengan string ini
  • $nama wadah harus diakhiri dengan string ini
code_monk
sumber
7
catatan untuk siapa pun yang tersandung pada ini: sudo tidak lagi diperlukan di linux jika Anda menambahkan diri Anda ke grup buruh pelabuhan (sangat disarankan)
code_monk
9
Harap berhati-hati dengan jawaban ini, karena name = containername sebenarnya adalah wildcard dan akan cocok dengan apa pun dengan name (. *) Containername (. *)
Ilia Sidorenko
5
@ekis menggunakan --no-truncbendera. jadidocker ps --no-trunc -aqf "name=containername"
code_monk
3
Mulai 2019-01-07, ini tidak berhasil untuk saya. Saya menggunakan docker v17.06.0. Perintah itu docker inspect --format="{{.Id}}" imageNameberhasil untuk saya.
PatS
1
@code_monk, Terima kasih atas konfirmasinya. Saya telah menambahkan komentar ke jawaban Rosberg Linhares dari mana saya mendapatkan idenya, dan menyarankan agar jawabannya diubah menjadi jawaban yang benar.
PatS
38

Anda bisa mencoba ini:

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

Pendekatan ini tidak bergantung pada OS.

Rosberg Linhares
sumber
5
Ini mengembalikan IMAGE ID BUKAN CONTAINER ID
vijay
2
@vijay, bagi saya ini memberikan ID penampung: https://i.ibb.co/BPwyxDj/Docker-Container-Id.png
Rosberg Linhares
Ini juga memberi saya ID penampung. ID penampung lengkap, bukan hanya 12 karakter pertama yang terpotong.
cowlinator
Suka yang ini! Terima kasih. 👍
GollyJer
@vijay @RosbergLinhares jika Anda memberikan nama penampung (diberikan di NAMESkolom dengan docker ps), ini memberikan ID penampung. Jika nama gambar (diberikan di IMAGEkolom dengan docker ps) disediakan, itu akan mengeluarkan ID gambar sebagai gantinya.
Wolfson
12
  1. Dapatkan ID kontainer dari menjalankan kontainer ::

    $docker ps -qf "name=IMAGE_NAME"
    
        -f: Filter output based on conditions provided
        -q: Only display numeric container IDs
    
  2. Dapatkan ID kontainer dari semua kontainer ::

    $docker ps -aqf "name=IMAGE_NAME"
    
        -a: all containers
    
kalyani chaudhari
sumber
2
docker ps -fq Namun tidak bekerja docker ps -qf(urutan bendera)
thom_nic
4

Perintah berikut:

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

Memberikan keluaran ini:

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`
Sidharth Srivastava
sumber
3

Jika Anda ingin mendapatkan ContainerId lengkap berdasarkan nama Container, gunakan perintah berikut

 docker ps --no-trunc -aqf name=containername
Girdhar Singh Rathore
sumber
0

Gambar Docker memeriksa ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}

rajat shukla
sumber
Tolong tambahkan penjelasan untuk jawaban Anda. Jawaban yang hanya berupa kode (atau dalam kasus ini hanya perintah) tidak membantu pengguna baru yang mungkin tidak memahami fungsi sebenarnya dari perintah atau kode tersebut. Cari tahu tentang pemrograman kultus kargo untuk mengetahui mengapa ini buruk.
Max Vollmer
0

Dalam kasus saya, saya menjalankan container Docker Tensorflow di Ubuntu 20.04: Jalankan container docker Anda di One terminal, saya menjalankannya dengan

docker run -it od

Dan kemudian mulai terminal lain dan berlari di bawah docker psdengan sudo:

sudo docker ps

Saya berhasil mendapatkan id kontainer:

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

Cara paling sederhana yang dapat saya pikirkan adalah dengan mengurai keluaran docker ps

Mari kita jalankan gambar ubuntu terbaru secara interaktif dan sambungkan

docker run -it ubuntu /bin/bash

Jika Anda menjalankan docker psdi terminal lain, Anda dapat melihat sesuatu seperti

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

Sayangnya, mengurai format ini tidak mudah karena menggunakan spasi untuk meratakan barang secara manual

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

Berikut ini skrip yang mengubah output ke JSON.

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

Sebenarnya, outputnya sedikit lebih nyaman untuk digunakan daripada itu. Setiap bidang memiliki lebar 20 karakter. [['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]

Gregory Nisbet
sumber