รับรหัสคอนเทนเนอร์นักเทียบท่าจากชื่อคอนเทนเนอร์


117

คำสั่งในการรับ id คอนเทนเนอร์นักเทียบท่าจากชื่อคอนเทนเนอร์คืออะไร


4
ฉันกำลังพยายามไม่พบตัวอย่างออนไลน์ ขอบคุณสำหรับการโหวตฉันชอบคนที่มีความสุข
Dimitri Kopriwa

คุณควรอ่านวิธีการขอและให้ตัวอย่างเช่นสามารถทำซ้ำได้น้อยที่สุด มีลักษณะอย่างไรdocker --listหรือคล้ายกันอย่างไร? คำสั่งในการสร้างคอนเทนเนอร์ใหม่คืออะไร? ฯลฯ
fedorqui 'SO หยุดทำร้าย'

1
ฉันคิดว่าคำถามของฉันค่อนข้างชัดเจนโปรดลงคะแนนฉันจะให้คำตอบโดยเร็ว
Dimitri Kopriwa

1
ไม่มีสิ่งที่เรียกว่า "ภาชนะ" ที่ฉันรู้จักในการทุบตี บางทีคุณอาจหมายถึงคอนเทนเนอร์นักเทียบท่า ? หากเป็นเช่นนั้นผู้ที่ดูแท็ก "ทุบตี" อาจสับสน อย่างไรก็ตามคุณได้รับรหัสคอนเทนเนอร์จากชื่อฉันแน่ใจว่าเป็นคำสั่งจริงและไม่มีส่วนเกี่ยวข้องกับภาษาโปรแกรม bash
djhaskin987

คำตอบ:


206

ใน Linux:

sudo docker ps -aqf "name=containername"

หรือใน OS X, Windows:

docker ps -aqf "name=containername"

ที่containernameเป็นชื่อคอนเทนเนอร์ของคุณ

เพื่อหลีกเลี่ยงการได้รับผลบวกที่ผิดพลาดดังที่ @llia Sidorenko บันทึกไว้คุณสามารถใช้ regex anchors ดังนี้:

docker ps -aqf "name=^containername$"

คำอธิบาย:

  • -qเพื่อความเงียบสงบ ส่งออกเฉพาะ ID
  • -aสำหรับทุกอย่าง. ทำงานได้แม้ว่าคอนเทนเนอร์ของคุณจะไม่ทำงานก็ตาม
  • -fสำหรับตัวกรอง
  • ^ชื่อคอนเทนเนอร์ต้องขึ้นต้นด้วยสตริงนี้
  • $ชื่อคอนเทนเนอร์ต้องลงท้ายด้วยสตริงนี้

7
หมายเหตุสำหรับทุกคนที่สะดุดกับสิ่งนี้: sudo ไม่จำเป็นต้องใช้บน linux อีกต่อไปหากคุณเพิ่มตัวเองในกลุ่มนักเทียบท่า (แนะนำเป็นอย่างยิ่ง)
code_monk

9
โปรดระวังคำตอบนี้เนื่องจาก name = containername เป็นสัญลักษณ์แทนและจะจับคู่กับชื่อ (. *) containername (. *)
Ilia Sidorenko

5
@ekkis ใช้--no-truncธง. ดังนั้นdocker ps --no-trunc -aqf "name=containername"
code_monk

3
เมื่อวันที่ 2019-01-07 สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันใช้ Docker v17.06.0 คำสั่งdocker inspect --format="{{.Id}}" imageNameใช้ได้ผลสำหรับฉัน
PatS

1
@code_monk ขอบคุณสำหรับการยืนยัน ฉันได้เพิ่มความคิดเห็นในคำตอบของ Rosberg Linhares ซึ่งเป็นที่ที่ฉันได้แนวคิดมาและแนะนำให้เปลี่ยนคำตอบของเขาเป็นคำตอบที่ถูกต้อง
PatS

40

คุณสามารถลองสิ่งนี้:

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

แนวทางนี้ไม่ขึ้นกับระบบปฏิบัติการ


5
ส่งคืน IMAGE ID NOT CONTAINER ID
vijay

2
@vijay สำหรับฉันสิ่งนี้ให้ ID คอนเทนเนอร์: https://i.ibb.co/BPwyxDj/Docker-Container-Id.png
Rosberg Linhares

สิ่งนี้ให้ ID คอนเทนเนอร์ด้วย ID คอนเทนเนอร์แบบเต็มไม่ใช่แค่อักขระ 12 ตัวแรกที่ถูกตัดทอน
cowlinator

ชอบอันนี้! ขอบคุณ. 👍
GollyJer

@vijay @RosbergLinhares หากคุณระบุชื่อของคอนเทนเนอร์ (ระบุในNAMESคอลัมน์ด้วยdocker ps) จะให้ ID คอนเทนเนอร์ หากมีการระบุชื่อรูปภาพ (ที่ระบุในIMAGEคอลัมน์ด้วยdocker ps) แทนจะส่งออก ID รูปภาพแทน
Wolfson

13
  1. รับรหัสคอนเทนเนอร์ของคอนเทนเนอร์ที่ใช้งาน ::

    $docker ps -qf "name=IMAGE_NAME"
    
        -f: Filter output based on conditions provided
        -q: Only display numeric container IDs
    
  2. รับรหัสคอนเทนเนอร์ของคอนเทนเนอร์ทั้งหมด ::

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

2
docker ps -fq อย่างไรก็ตามdocker ps -qfไม่ได้ผล (ลำดับของธง)
thom_nic

5

คำสั่งต่อไปนี้:

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

ให้ผลลัพธ์นี้:

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

หากคุณต้องการรับ ContainerId ที่สมบูรณ์ตามชื่อคอนเทนเนอร์ให้ใช้คำสั่งต่อไปนี้

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

0

อิมเมจ Docker ตรวจสอบ ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}


โปรดเพิ่มคำอธิบายในคำตอบของคุณ คำตอบที่เป็นโค้ดเท่านั้น (หรือในกรณีนี้คือคำสั่งเท่านั้น) ไม่เป็นประโยชน์สำหรับผู้ใช้ใหม่ที่อาจไม่เข้าใจว่าคำสั่งหรือโค้ดทำอะไร ค้นหาการเขียนโปรแกรมลัทธิการขนส่งสินค้าว่าเหตุใดจึงไม่ดี
Max Vollmer

0

ในกรณีของฉันฉันใช้ Tensorflow Docker container ใน Ubuntu 20.04: เรียกใช้ docker container ของคุณใน One terminal ฉันรันด้วย

docker run -it od

จากนั้นเริ่มเทอร์มินัลอื่นและวิ่งด้านล่างdocker psด้วย sudo:

sudo docker ps

ฉันได้รับ id คอนเทนเนอร์สำเร็จแล้ว:

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

-2

วิธีที่ง่ายที่สุดที่ฉันคิดได้คือการแยกวิเคราะห์ผลลัพธ์ของไฟล์ docker ps

มาเรียกใช้อิมเมจอูบุนตูล่าสุดแบบโต้ตอบและเชื่อมต่อกับมัน

docker run -it ubuntu /bin/bash

หากคุณทำงานdocker psในเทอร์มินัลอื่นคุณจะเห็นสิ่งต่างๆเช่น

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

น่าเสียดายที่การแยกวิเคราะห์รูปแบบนี้ไม่ใช่เรื่องง่ายเนื่องจากใช้ช่องว่างเพื่อจัดแนวสิ่งของด้วยตนเอง

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

นี่คือสคริปต์ที่แปลงเอาต์พุตเป็น JSON

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

อันที่จริงเอาต์พุตสะดวกกว่าในการทำงานเล็กน้อย ทุกช่องมีความกว้าง 20 อักขระ [['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.