คุณสามารถเข้าถึง จัดการ และจัดการอ็อบเจ็กต์นักเทียบท่า เช่น คอนเทนเนอร์ รูปภาพ คลัสเตอร์ ฝูง ฯลฯ โดยใช้ python library API คุณสามารถทำอะไรก็ได้ที่คำสั่งนักเทียบท่าให้คุณทำ สิ่งนี้มีประโยชน์มากเมื่อคุณใช้แอป python เช่น django หรือ flask และคุณต้องการดูแลคอนเทนเนอร์นักเทียบท่าของคุณโดยใช้สคริปต์ python เดียวกันกับที่คุณใช้สำหรับแอปพลิเคชัน
ในการใช้ python library API สำหรับนักเทียบท่า คุณต้องติดตั้งแพ็คเกจชื่อ docker−py คุณสามารถทำได้โดยใช้คำสั่ง pip ต่อไปนี้ หากคุณติดตั้ง python 2 ไว้ ให้แทนที่ pip3 ด้วย pip
pip3 install docker−py
ตอนนี้ เราจะมาดูคุณสมบัติต่างๆ ของ API ไลบรารีไคลเอนต์ python สำหรับนักเทียบท่าทีละตัว
ในการรันคำสั่ง docker ภายในสคริปต์ python โดยใช้ API คุณต้องเชื่อมต่อกับ docker daemon ก่อน คุณสามารถทำได้โดยใช้คำสั่งต่อไปนี้ -
#import client from docker import client #create a client object to connect to the daemon myClient = client.Client(base_url='unix://var/run/docker.sock')
หลังจากที่คุณเชื่อมต่อกับ docker daemon แล้ว คุณจะได้รับรายการคอนเทนเนอร์ทั้งหมดโดยใช้คำสั่งต่อไปนี้ โปรดทราบว่าคุณเข้าสู่ระบบในฐานะผู้ใช้รูทก่อนที่จะรันคำสั่งใดๆ เพื่อหลีกเลี่ยงข้อผิดพลาดในการอนุญาต
myClient.containers()
มันจะแสดงรายการคอนเทนเนอร์ทั้งหมดที่มีอยู่ในเครื่องของคุณพร้อมกับ Id, รูปภาพที่เกี่ยวข้องและรหัสรูปภาพ, ป้ายกำกับ, พอร์ต, สถานะ ฯลฯ
ในการสร้างคอนเทนเนอร์ใหม่ คุณสามารถใช้เมธอด create_container จากออบเจ็กต์ไคลเอ็นต์ได้
myContainer=myClient.create_container(image='ubuntu:latest',command='/bin/bash')
ด้วยการใช้คำสั่งด้านบนนี้ คุณสามารถสร้างคอนเทนเนอร์จากอิมเมจอูบุนตูและจัดเตรียมคำสั่งให้เปิด bash หรือคำสั่งอื่นๆ ตามที่คุณต้องการ
คุณสามารถตรวจสอบว่าคอนเทนเนอร์ถูกสร้างขึ้นโดยการพิมพ์รหัสของคอนเทนเนอร์โดยใช้คำสั่งต่อไปนี้ -
print(myContainer['Id'])
ในการตรวจสอบคอนเทนเนอร์เฉพาะ คุณสามารถใช้เมธอด inspect_container บนออบเจ็กต์ไคลเอ็นต์ได้
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')
คุณต้องระบุรหัสคอนเทนเนอร์ของคอนเทนเนอร์ที่คุณต้องการตรวจสอบภายในเป็นอาร์กิวเมนต์ คุณยังตรวจสอบได้เฉพาะช่องที่เฉพาะเจาะจง เช่น เส้นทางหรือชื่อหรือวันที่สร้าง
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Name'] myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Created'] myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Path']
ในการคอมมิตคอนเทนเนอร์ คุณสามารถใช้วิธีคอมมิตบนออบเจ็กต์คอนเทนเนอร์ได้ คุณยังระบุแท็กให้กับคอนเทนเนอร์ได้อีกด้วย
myClient.commit('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5', tag='container1')
The above command will return the Id of the container. In order to restart a container, you need to make sure the container still exists. To avoid this, what we can do is to wrap the command inside a try−catch block.
try: myClient.restart('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5') except Exception as e: print(e)
หากต้องการรับรายการรูปภาพทั้งหมด คุณสามารถใช้เมธอดรูปภาพบนออบเจ็กต์ไคลเอ็นต์ได้
images = myClient.images()
มันจะกลับรายการของภาพทั้งหมด หากต้องการพิมพ์รายละเอียดของภาพแรก ให้ใช้ −
print(images[0])
ในการตรวจสอบภาพ −
myClient.inspect_image('9140108b62dc87d9b278bb0d4fd6a3e44c2959646eb966b86531306faa81b09b')
คุณต้องระบุรหัสรูปภาพเป็นอาร์กิวเมนต์
ตอนนี้เราจะเห็นคำสั่งที่มีประโยชน์บางอย่างในการทำงานกับโวลุ่ม หากต้องการรับรายการวอลุ่มทั้งหมด คุณสามารถใช้เมธอด volumes บนออบเจ็กต์ไคลเอ็นต์ได้
volumes = myClient.volumes()
มันจะกลับรายการของวอลุ่มทั้งหมด หากต้องการพิมพ์รายละเอียดของเล่มแรก คุณสามารถใช้ −
print(volumes['Volumes'][0])
ในการสร้างโวลุ่ม คุณต้องระบุชื่อโวลุ่ม ชื่อไดรเวอร์ และคุณยังสามารถระบุตัวเลือกอื่นๆ ได้เช่นกัน
volume=myClient.create_volume(name='myVolume1', driver='local', driver_opts={})
หากต้องการตรวจสอบว่ามีการสร้างโวลุ่มขึ้นหรือไม่ ให้ลองพิมพ์ออกมา
print(volume)
ในการตรวจสอบโวลุ่ม ใช้เมธอด inspect_volume บนออบเจ็กต์ไคลเอ็นต์
myClient.inspect_volume('myVolume1')
ในการสร้างคอนเทนเนอร์ที่มีไดรฟ์ข้อมูลติดตั้งอยู่ คุณสามารถใช้ตัวอย่างต่อไปนี้ −
mounted_container = myClient.create_container( 'ubuntu', 'ls', volumes=['/var/lib/docker/volumes/myVolume1'], host_config=myClient.create_host_config(binds=[ '/var/lib/docker/volumes/myVolume1:/usr/src/app/myVolume1' , ]) )
คำสั่งด้านบนสร้างคอนเทนเนอร์จากอิมเมจอูบุนตูและระบุจุดเข้าใช้งานเป็น ls และติดตั้งโวลุ่มที่ /var/lib/docker/volumes/myVolume1 ในเครื่องของคุณไปยัง /usr/src/app/myVolume1 ในคอนเทนเนอร์นักเทียบท่าของคุณ
โดยสรุป ในบทความนี้ เราได้กล่าวถึงวิธีการสร้าง ตรวจสอบ และจัดการอ็อบเจ็กต์นักเทียบท่า เช่น คอนเทนเนอร์นักเทียบท่า รูปภาพ วอลุ่มโดยใช้สคริปต์หลาม สิ่งนี้มีประโยชน์มากเมื่อคุณสร้างแอปพลิเคชันโดยใช้เครื่องมือ python เช่น เว็บแอปพลิเคชันโดยใช้ django หรือ flask หรือแอปพลิเคชัน GUI โดยใช้ tkinter หรือใช้สคริปต์ python อื่นๆ หากคุณต้องการจัดการแอปพลิเคชันจากคอนเทนเนอร์นักเทียบท่า ขอแนะนำอย่างยิ่งให้ใช้สคริปต์หลามเพื่อเขียนคำสั่งนักเทียบท่า แทนที่จะดำเนินการคำสั่งแยกกันผ่านอินเทอร์เฟซบรรทัดคำสั่ง