Computer >> Máy Tính >  >> Lập trình >> Python

API thư viện Python cho Docker

Bạn có thể truy cập, quản lý và thao tác các đối tượng docker như vùng chứa, hình ảnh, cụm, bầy, v.v. bằng cách sử dụng API thư viện python. Bạn có thể làm bất cứ điều gì mà các lệnh của docker cho phép bạn làm. Điều này rất hữu ích khi bạn đang sử dụng một ứng dụng python như django hoặc flask và bạn muốn duy trì vùng chứa docker của mình bằng cách sử dụng cùng một tập lệnh python mà bạn sử dụng cho ứng dụng.

Để sử dụng API thư viện python cho docker, bạn cần cài đặt một gói có tên là docker − py. Bạn có thể làm như vậy bằng cách sử dụng lệnh pip sau. Nếu bạn đã cài đặt python 2, hãy thay thế pip3 bằng pip.

pip3 install docker−py

Bây giờ, chúng ta sẽ xem xét từng tính năng khác nhau của API thư viện ứng dụng khách python cho docker.

Để chạy các lệnh docker bên trong tập lệnh python bằng API, trước tiên bạn cần kết nối với trình nền docker. Bạn có thể làm như vậy bằng các lệnh sau -

#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')

Sau khi bạn đã kết nối với trình nền docker, bạn có thể nhận được danh sách tất cả các vùng chứa bằng cách sử dụng lệnh sau. Xin lưu ý rằng bạn đã đăng nhập với tư cách người dùng root trước khi chạy bất kỳ lệnh nào để tránh lỗi quyền.

myClient.containers()

Nó sẽ cung cấp cho bạn danh sách tất cả các vùng chứa tồn tại trong máy cục bộ của bạn cùng với Id của chúng, Id hình ảnh và hình ảnh được liên kết, nhãn, cổng, trạng thái, v.v.

Để tạo một vùng chứa mới, bạn có thể sử dụng phương thức create_container từ đối tượng khách hàng.

myContainer=myClient.create_container(image='ubuntu:latest',command='/bin/bash')

Sử dụng các lệnh trên, bạn có thể tạo vùng chứa từ hình ảnh ubuntu và cung cấp lệnh để mở bash hoặc bất kỳ lệnh nào khác theo ý muốn.

Bạn có thể kiểm tra xem vùng chứa đã được tạo chưa bằng cách in Id của vùng chứa bằng lệnh sau -

print(myContainer['Id'])

Để kiểm tra một vùng chứa cụ thể, bạn có thể sử dụng phương thức checks_container trên đối tượng khách hàng.

myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')

Bạn cần cung cấp Id vùng chứa của vùng chứa mà bạn muốn kiểm tra bên trong làm đối số. Bạn cũng có thể chỉ kiểm tra các trường cụ thể như đường dẫn hoặc tên hoặc ngày tạo.

myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Name']

myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Created']

myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Path']

Để cam kết một vùng chứa, bạn có thể sử dụng phương thức cam kết trên đối tượng vùng chứa. Bạn cũng có thể cung cấp thẻ cho vùng chứa.

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)

Để có danh sách tất cả các hình ảnh, bạn có thể sử dụng phương thức hình ảnh trên đối tượng khách hàng.

images = myClient.images()

Nó sẽ trả về một danh sách tất cả các hình ảnh. Để in chi tiết của hình ảnh đầu tiên, hãy sử dụng -

print(images[0])

Để kiểm tra hình ảnh -

myClient.inspect_image('9140108b62dc87d9b278bb0d4fd6a3e44c2959646eb966b86531306faa81b09b')

Bạn cần cung cấp Id hình ảnh làm đối số.

Bây giờ chúng ta sẽ thấy một số lệnh hữu ích để làm việc với khối lượng. Để có được danh sách tất cả các ổ, bạn có thể sử dụng phương thức ổ trên đối tượng khách.

volumes = myClient.volumes()

Nó sẽ trả về một danh sách tất cả các tập. Để in chi tiết của tập đầu tiên, bạn có thể sử dụng -

print(volumes['Volumes'][0])

Để tạo một ổ đĩa, bạn cần chỉ định tên ổ đĩa, tên trình điều khiển và tùy chọn, bạn cũng có thể chỉ định các tùy chọn khác.

volume=myClient.create_volume(name='myVolume1', driver='local', driver_opts={})

Để kiểm tra xem tập đã được tạo hay chưa, hãy thử in.

print(volume)

Để kiểm tra một khối lượng, hãy sử dụng phương thức checks_volume trên đối tượng khách hàng.

myClient.inspect_volume('myVolume1')

Để tạo một vùng chứa với một ổ đĩa được gắn trên đó, bạn có thể sử dụng ví dụ sau -

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'
  , ])
)

Lệnh trên tạo một vùng chứa từ hình ảnh ubuntu và chỉ định điểm nhập là ls và gắn một ổ đĩa nằm tại / var / lib / docker / volume / myVolume1 trong máy cục bộ của bạn thành / usr / src / app / myVolume1 trong vùng chứa docker của bạn.

Để kết thúc, trong bài viết này, chúng ta đã thảo luận về cách tạo, kiểm tra và quản lý các đối tượng docker như vùng chứa docker, hình ảnh, ổ đĩa bằng cách sử dụng tập lệnh python. Điều này rất hữu ích khi bạn đang xây dựng ứng dụng bằng các công cụ python, chẳng hạn như ứng dụng web sử dụng django hoặc flask hoặc ứng dụng GUI bằng tkinter hoặc sử dụng bất kỳ tập lệnh python nào khác. Nếu bạn muốn quản lý ứng dụng từ vùng chứa docker, bạn nên sử dụng tập lệnh python để viết lệnh docker thay vì thực hiện các lệnh riêng lẻ thông qua giao diện dòng lệnh.