Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Library API สำหรับ Docker


คุณสามารถเข้าถึง จัดการ และจัดการอ็อบเจ็กต์นักเทียบท่า เช่น คอนเทนเนอร์ รูปภาพ คลัสเตอร์ ฝูง ฯลฯ โดยใช้ 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 อื่นๆ หากคุณต้องการจัดการแอปพลิเคชันจากคอนเทนเนอร์นักเทียบท่า ขอแนะนำอย่างยิ่งให้ใช้สคริปต์หลามเพื่อเขียนคำสั่งนักเทียบท่า แทนที่จะดำเนินการคำสั่งแยกกันผ่านอินเทอร์เฟซบรรทัดคำสั่ง