คำสั่งในการรับ id คอนเทนเนอร์นักเทียบท่าจากชื่อคอนเทนเนอร์คืออะไร
docker --list
หรือคล้ายกันอย่างไร? คำสั่งในการสร้างคอนเทนเนอร์ใหม่คืออะไร? ฯลฯ
คำสั่งในการรับ id คอนเทนเนอร์นักเทียบท่าจากชื่อคอนเทนเนอร์คืออะไร
docker --list
หรือคล้ายกันอย่างไร? คำสั่งในการสร้างคอนเทนเนอร์ใหม่คืออะไร? ฯลฯ
คำตอบ:
ใน 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$"
คำอธิบาย:
--no-trunc
ธง. ดังนั้นdocker ps --no-trunc -aqf "name=containername"
docker inspect --format="{{.Id}}" imageName
ใช้ได้ผลสำหรับฉัน
คุณสามารถลองสิ่งนี้:
docker inspect --format="{{.Id}}" container_name
แนวทางนี้ไม่ขึ้นกับระบบปฏิบัติการ
NAMES
คอลัมน์ด้วยdocker ps
) จะให้ ID คอนเทนเนอร์ หากมีการระบุชื่อรูปภาพ (ที่ระบุในIMAGE
คอลัมน์ด้วยdocker ps
) แทนจะส่งออก ID รูปภาพแทน
รับรหัสคอนเทนเนอร์ของคอนเทนเนอร์ที่ใช้งาน ::
$docker ps -qf "name=IMAGE_NAME"
-f: Filter output based on conditions provided
-q: Only display numeric container IDs
รับรหัสคอนเทนเนอร์ของคอนเทนเนอร์ทั้งหมด ::
$docker ps -aqf "name=IMAGE_NAME"
-a: all containers
docker ps -fq
อย่างไรก็ตามdocker ps -qf
ไม่ได้ผล (ลำดับของธง)
คำสั่งต่อไปนี้:
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`
หากคุณต้องการรับ ContainerId ที่สมบูรณ์ตามชื่อคอนเทนเนอร์ให้ใช้คำสั่งต่อไปนี้
docker ps --no-trunc -aqf name=containername
อิมเมจ Docker ตรวจสอบ ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}
ในกรณีของฉันฉันใช้ 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
วิธีที่ง่ายที่สุดที่ฉันคิดได้คือการแยกวิเคราะห์ผลลัพธ์ของไฟล์ 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]]