docker-py 用Python調(diào)用Docker接口的方法
官方文檔:【https://docker-py.readthedocs.io/en/stable/images.html】
眾所周知,Docker向外界提供了一個(gè)API來(lái)管理其中的資源。這個(gè)API可以是socket文件形式的(一般也是默認(rèn)的,在/var/run/docker.sock中),也可以是TCP形式的。以前想要通過(guò)編程的方法來(lái)調(diào)用這些API還是傻傻的用subprocess等和系統(tǒng)層面交互的模塊來(lái)調(diào)用,而docker-py這個(gè)模塊則是直接把DockerAPI的調(diào)用封裝了進(jìn)去,讓我們可以更加貼合Docker地進(jìn)行API調(diào)用。
安裝還是用pip:
pip install docker-py,意外的,這個(gè)模塊所需要的依賴特別多,等了比我預(yù)想更長(zhǎng)的時(shí)間,裝好了。在python中import docker,不報(bào)錯(cuò)就是裝好了。
■簡(jiǎn)單使用
網(wǎng)上的部分教程和使用方法說(shuō)明可能是因?yàn)榘姹静磺泻系脑?,不奏效。從中篩選了一些奏效的代碼。首先是一個(gè)最簡(jiǎn)單的應(yīng)用,就是實(shí)例化出一個(gè)dockerapi調(diào)用者的實(shí)例:
import docker client = docker.Client(base_url='unix:///var/run/docker.sock') for component,version in client.version().iteritems(): print component,version
初始化實(shí)例的過(guò)程中用到了參數(shù)base_url,它可以指出一個(gè)socket文件或者響應(yīng)的dockerTCP連接如tcp://127.0.0.1:2375這樣子。除此之外,還有version參數(shù)可以指出docker的版本,timeout參數(shù)指出連接超時(shí)的時(shí)間,tls參數(shù)可以置True或False來(lái)指出當(dāng)前連接是否需要用到SSL證書,另外也可以傳遞一個(gè)docker.tls.TLSConfig類的實(shí)例來(lái)實(shí)現(xiàn)指定的TLS配置。
得到的客戶端實(shí)例client可以調(diào)用一些方法。比如version方法是將當(dāng)前docker以及其所依賴的環(huán)境中各個(gè)組件的版本信息以一個(gè)字典的方式展現(xiàn)出來(lái)。上述在虛擬機(jī)中輸出如下:
KernelVersion 3.10.0-693.5.2.el7.x86_64 PkgVersion docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64 Os linux BuildTime 2018-01-30T09:17:00.069703428+00:00 ApiVersion 1.24 Version 1.12.6 GitCommit 3e8e77d/1.12.6 Arch amd64 GoVersion go1.8.3
其他的讀取當(dāng)前docker環(huán)境中的一些方法如:
client.images([name])獲取鏡像信息,name可以是一個(gè)鏡像的name,name的一部分,name:tag等多種形式,獲取到完整的鏡像信息。不指定name時(shí)返回所有鏡像信息
client.containers([name])獲取容器信息,name可以是容器的name, id等等,返回
client.info()docker info命令的那些輸出
client.start/stop(name)相當(dāng)于docker start和stop制定容器
...
上述幾個(gè)方法的輸出都是標(biāo)準(zhǔn)的JSON格式,可以很方便地被嵌入到其他的一些系統(tǒng)中
client.login()可以傳入實(shí)名參數(shù)username, password, registry等,相當(dāng)于docker login
這里還有很多方法可以說(shuō),正巧這回想正式用下ipython這個(gè)神器。yum install ipython之后(還挺大的。。),鍵入ipython就進(jìn)入ipython的shell了。在實(shí)例化玩client之后,輸入client.然后按tab鍵要求補(bǔ)全的話,就會(huì)顯示出所有client實(shí)例可以調(diào)用的方法和屬性。
對(duì)于一個(gè)方法比如client.delete,后面輸入問(wèn)號(hào)再按回車,就可以看到這個(gè)方法相關(guān)的一些說(shuō)明和用法。比去網(wǎng)上查,看官方文檔不知道高到哪里去了。
列個(gè)所有方法的表,偷懶不詳寫了。
以上這篇docker-py 用Python調(diào)用Docker接口的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- python統(tǒng)計(jì)mysql數(shù)據(jù)量變化并調(diào)用接口告警的示例代碼
- python 如何調(diào)用遠(yuǎn)程接口
- python的Jenkins接口調(diào)用方式
- python調(diào)用API接口實(shí)現(xiàn)登陸短信驗(yàn)證
- Python 調(diào)用有道翻譯接口實(shí)現(xiàn)翻譯
- python調(diào)用接口的4種方式代碼實(shí)例
- python調(diào)用webservice接口的實(shí)現(xiàn)
- Python?flask框架post接口調(diào)用示例
- python 如何調(diào)用 dubbo 接口
相關(guān)文章
python內(nèi)置函數(shù)sorted()用法深入分析
這篇文章主要介紹了python內(nèi)置函數(shù)sorted()用法,結(jié)合實(shí)例形式較為深入的分析了Python內(nèi)置函數(shù)sorted()功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-10-10用Django寫天氣預(yù)報(bào)查詢網(wǎng)站
今天小編就為大家分享一篇關(guān)于用Django寫天氣預(yù)報(bào)查詢網(wǎng)站的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10python實(shí)現(xiàn)冒泡排序算法的兩種方法
本篇文章主要介紹了python實(shí)現(xiàn)冒泡排序的兩種方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03深入解析神經(jīng)網(wǎng)絡(luò)從原理到實(shí)現(xiàn)
這篇文章主要介紹了深入解析神經(jīng)網(wǎng)絡(luò)從原理到實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-0711個(gè)Python3字典內(nèi)置方法大全與示例匯總
這篇文章主要給大家介紹了11個(gè)Python3字典內(nèi)置方法大全與示例的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Python中os.path模塊的8個(gè)神奇函數(shù)分享
在Python編程中,os.path模塊是一個(gè)非常重要的模塊,它提供了用于處理文件路徑和目錄的函數(shù),本文將介紹os.path模塊中最常用的8個(gè)內(nèi)置函數(shù),需要的可以參考下2023-11-11python統(tǒng)計(jì)文本文件內(nèi)單詞數(shù)量的方法
這篇文章主要介紹了python統(tǒng)計(jì)文本文件內(nèi)單詞數(shù)量的方法,涉及Python針對(duì)文本文件及字符串的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05