Python Docker 庫 API
您可以使用 Python 庫 API 訪問、管理和操作 Docker 物件,例如容器、映象、叢集、swarm 等。您可以執行 Docker 命令幾乎可以執行的所有操作。當您使用 Django 或 Flask 等 Python 應用程式並希望使用與應用程式相同的 Python 指令碼維護 Docker 容器時,這非常方便。
要使用 Python 庫 API for Docker,您需要安裝名為 docker-py 的包。您可以使用以下 pip 命令執行此操作。如果您安裝了 Python 2,請將 pip3 替換為 pip。
pip3 install docker−py
現在,我們將逐一檢視 Python 客戶端庫 API for Docker 的不同功能。
為了使用 API 在 Python 指令碼中執行 Docker 命令,您首先需要連線到 Docker 守護程序。您可以使用以下命令執行此操作:
#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 守護程序後,您可以使用以下命令獲取所有容器的列表。請注意,為了避免許可權錯誤,您需要以 root 使用者身份登入才能執行任何命令。
myClient.containers()
它將為您提供本地機器中所有現有容器的列表,包括其 ID、關聯映象和映象 ID、標籤、埠、狀態等。
要建立新的容器,您可以使用客戶端物件中的 create_container 方法。
myContainer=myClient.create_container(image='ubuntu:latest',command='/bin/bash')
使用以上命令,您可以從 ubuntu 映象建立容器,並提供開啟 bash 或任何其他所需命令的命令。
您可以使用以下命令列印容器 ID 來檢查容器是否已建立:
print(myContainer['Id'])
要檢查特定容器,您可以對客戶端物件使用 inspect_container 方法。
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')您需要在其中提供要檢查的容器的容器 ID 作為引數。您還可以僅檢查特定欄位,例如路徑、名稱或建立日期。
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Name']
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Created']
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Path']要提交容器,您可以使用容器物件上的 commit 方法。您還可以為容器提供標籤。
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 方法。
images = myClient.images()
它將返回所有映象的列表。要列印第一個映象的詳細資訊,請使用:
print(images[0])
要檢查映象:
myClient.inspect_image('9140108b62dc87d9b278bb0d4fd6a3e44c2959646eb966b86531306faa81b09b')
您需要提供映象 ID 作為引數。
現在我們將看到一些與卷一起使用的有用命令。要獲取所有卷的列表,您可以使用客戶端物件上的 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' , ]) )
以上命令從 ubuntu 映象建立容器,並將入口點指定為 ls,並將您本地機器上位於 /var/lib/docker/volumes/myVolume1 的卷掛載到 Docker 容器中的 /usr/src/app/myVolume1。
總而言之,在本文中,我們討論瞭如何使用 Python 指令碼建立、檢查和管理 Docker 物件(例如 Docker 容器、映象、卷)。當您使用 Python 工具(例如使用 Django 或 Flask 的 Web 應用程式、使用 tkinter 的 GUI 應用程式或任何其他 Python 指令碼)構建應用程式時,這非常有用。如果您想從 Docker 容器管理應用程式,強烈建議使用 Python 指令碼編寫 Docker 命令,而不是透過命令列介面單獨執行命令。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP