docker api指的是docker的應用程式接口,是軟體系統不同組成部分銜接的約定,docker主要有三大對外api:1、Docker Registry API;2、Docker Hub API;3、Docker Remote API。
本教學操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
一、什麼是API
1. API具體是什麼?
API這個字在維基百科裡解釋是這樣的:應用程式介面(英文:application programming interface,縮寫作API),又稱為應用程式接口,就是軟體系統不同組成部分銜接的約定。看完這個解釋估計你還是有點懵逼,不過沒關係,下面我們會用通俗的語言來介紹什麼是API。
我們每個人都有手機,當手機沒電了我們一定會找固定的充電器和充電線來充電。蘋果的用蘋果,安卓的用安卓。但你一定不會用安卓的線去充蘋果的手機,這道理很簡單,因為你的蘋果手機是Lightning 接口,安卓的是micro接口。你要想充電或對你手機傳輸數據,那麼必須買合適的充電線和數據線, 這是對於接口最簡單易懂的認識。
類似的,程式的介面也是。每個程式都有固定對外的標準接口,這個接口由開發這個程式的開發者定義的,你要想連接它們,那麼就應該遵循它們的接口標準。
2. 什麼是REST
現在學習API 常常看到一個字叫REST,英文全名為Representational State Transfer。那什麼是REST呢? REST一詞是Apache 基金會主席Roy Fielding博士提出來的,中文意思叫做"表現層狀態轉化"。中文不太好理解,不過我們從下面幾個方面去認識你大概能明白什麼是rest。
2.1. 什麼是表現層?
這裡的表現層指的是資源的表現層,所謂"資源",就是網路上的一個具體訊息。一個文本,一部電影,一個服務都可以算是一個資源。那麼這些資源又用什麼來決定和表現呢?那就得用到URI,像是我們下載一個電影,一定有對應的URI位址,我們看一部網路小說,也有對應的URI位址。而這個地址是唯一的,獨一無二的。資源用URI標識了,我們可以理解為這個資源已經在網路上「表現」了。所以說到這裡,表現層的意思其實就是把"資源"具體呈現出來的形式。
2.2. 什麼是狀態轉換?
常識裡,我們要把一物體發生狀態改變,一定需要一些操作和手段。網路上的資源也是如此,你下載一部電影,首先得下載,然後才能打開欣賞。下載獲取都需要走HTTP協議,HTTP協議裡面,四個基本的操作方式:GET、POST、PUT、DELETE(獲取,新建,更新,刪除)。透過這基本的四種方法可以對網路上的資源進行一些狀態轉換操作。
所以,REST 是表現層的狀態轉化,大家分開理解上面兩點然後結合在一起就明白了。簡單粗暴的可以理解為:方法 URI資源。
GET /movie/war/珍珠港
DELETE /movie/war/珍珠港
...
#2、Docker API種類
docker 的api也遵循rest的風格,因此我們了解了上面兩點後,我們開始學習docker本身api的相關知識。
首先,我們把docker當作一種資源,我們可以透過api來對docker進行操作,操作的方法也是http的那幾種方法。
其次,我們要了解docker有哪些對外可使用的api,這裡docker官方主要有三大對外api
- Docker Registry API
- Docker Hub API
- Docker Remote API
1. Docker Registry API
這個是docker映像倉庫的api,透過操作這套API,你可以自由的自動化、程式化的管理你的鏡像倉庫。
2. Docker Hub API
Docker Hub API是使用者管理作業的API,docker hub是使用校驗和公共namespaces 的方式來儲存帳戶資訊、認證帳戶、進行帳戶授權。 API同時也允許操作相關的使用者倉庫和 library 倉庫。
3. Docker Remote API
這套API用於控制主機 Docker 服務端的 API,等價於 docker命令列客戶端。有了它,你可以遠端操作docker容器,更重要的是你可以透過程式自動化維運docker進程。
三、API使用前準備
前面我們說過,操作rest api用的就是http的那些方法。那麼具體要怎麼使用這些方法呢?這裡我們提供幾種通用的方式來操作呼叫下docker 的API,然後體驗下。在體驗之前,我們需要開啟docker rest api,不然沒開啟,你是不能用的。具體開啟的方法:
$ vim /usr/lib/systemd/system/docker.service
在ExecStart=/usr/bin/dockerd 後面直接加入-H tcp://0.0.0.0:8088 -H unix:///var/run/docker.sock (注意埠8088自己隨便定義,別跟目前的衝突即可)
$ systemctl daemon-reload $ systemctl restart docker
重啟完成後,我們執行curl 127.0.0.1:8088/info | python -mjson.tool 指令即可查看docker的狀態狀態(json形式,python -mjson. tool借用了這個工具,這樣讓json格式化,好閱讀)
啟用了docker API後,我們還有個問題,那就是在哪查詢docker 現有的API?既然docker提供了那3個API庫:Docker Registry API、Docker Hub API、Docker Remote API。那麼哪裡可以查看具體詳細的API,例如Docker Registry API 下面到底有哪些API位址呢?有查詢鏡像的API嗎?有刪除的嗎?其實這些都有的,我們可以直接去官網API手冊裡查看即可,網址是:https://docs.docker.com/engine/api/v1.38/ (想看什麼版本的把最後的v1.38 替換成目標版本號即可)
這裡要注意的是,官方不再建議使用API v1.12之前的版本,建議使用v1.24 or 更高的版本。
查看本機docker API版本可以用docker version 指令:
#四、如何操作docker API
1. 最簡單的curl方式
CURL這個指令,我想大家都熟悉,預設linux下都自備安裝。很多測試http的方法都可以直接使用 CURL的方式。
例如我們查看docker的images詳細信息,就可以直接用curl 來調取:
$ curl -X GET http://127.0.0.1:8088/images/json
這樣顯示會比較錯亂無章,我們可以在指令後面加上python -mjson.tool 格式化下
$ curl -X GET http://127.0.0.1:8088/images/json | python -mjson.tool
這樣的結果格式就比較標準化,比較容易閱讀。
查看所有containers容器:
$ curl -X GET http://127.0.0.1:8088/containers/json | python -mjson.tool
建立一個containers容器:
這裡建立一個mariadb資料庫的容器,設定了密碼是123456,監聽埠是3306
$ curl -X POST -H "Content-Type: application/json" -d '{ "Image": "mariadb", "Env": ["MYSQL_ROOT_PASSWORD=123456"], "ExposedPorts": { "3306/tcp": {} }, "HostConfig": { "PortBindings": { "3306/tcp": [{"HostIp": "","HostPort": "3306"}] } }, "NetworkSettings": { "Ports": { "5000/tcp": [{"HostIp": "0.0.0.0","HostPort": "3306"}] } } }' http://127.0.0.1:8088/containers/create
啟動/停止/重啟一個containers容器:
$ curl -X POST http://127.0.0.1:8088/containers/{id}/start (注意这里是POST方法) $ curl -X POST http://127.0.0.1:8088/containers/{id}/stop (注意这里是POST方法) $ curl -X POST http://127.0.0.1:8088/containers/{id}/restart (注意这里是POST方法) ...
具體還有很多API方法,大家都可以登入上面提到的連結進行查看
https:/ /docs.docker.com/engine/api/v1.38
#2. python程式腳本方式
python 非常強大,這個大家都認可。現在很多自動化場景都是透過python載入第三方對應的函式庫,然後寫業務邏輯自動化方式devops運維。 docker給了python一個非常強大的函式庫,名字就叫docker。我們可以登入官方的python sdk位址來學習認識python如何具體操作docker。
網址是:https://docker-py.readthedocs.io/en/stable/
2.1. 安裝docker python函式庫
#$ pip install docker
2.2. 開始使用
import docker client = docker.DockerClient(base_url='unix://var/run/docker.sock', version="auto") client.containers.run("ubuntu", "echo hello world")
這是一個很簡單的使用例子,我們可以分析下:
第一行表示引入第三方函式庫docker。
第二行用於配置Docker服務端的基本信息,包含了base_url(Docker服務端的位址)以及version(auto可以自動檢查docker的版本)。
第三行則是相當於執行了一個docker run ubuntu echo hello world的指令。
2.3. 進階使用
import docker client = docker.DockerClient(base_url="tcp://ip:port") client.images.list() # 类似docker images命令,显示image的信息列表 client.containers.list() # 类似docker ps命令 client.containers.list(all=True) # 类似docker ps -a命令 container = client.containers.get(container_id) # 获取daodocker容器,这里container_id 是你要输入的具体容器id container.start() # 类似docker start 传入具体的容器id ,开启容器
總結:現在很多企業都已經步入自動化維運時代了,所以掌握api的運用技巧和法則是非常有必要的。上面我們大概介紹了下docker api的入門,其實你要玩得非常好,這裡有很大的彈性和複雜性,不過這裡就需要你一些腳本程式設計的知識了。
推薦學習:《docker影片教學》
以上是docker api是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在Linux上使用Docker的最佳實踐包括:1.使用dockerrun命令創建和運行容器,2.利用DockerCompose管理多容器應用,3.定期清理未使用的鏡像和容器,4.採用多階段構建優化鏡像大小,5.限制容器資源使用提升安全性,6.遵循Dockerfile最佳實踐提高可讀性和維護性。這些實踐能幫助用戶高效使用Docker,避免常見問題並優化容器化應用。

在Linux上使用Docker可以提高開發和部署效率。 1.安裝Docker:使用腳本在Ubuntu上安裝Docker。 2.驗證安裝:運行sudodockerrunhello-world。 3.基本用法:創建Nginx容器dockerrun--namemy-nginx-p8080:80-dnginx。 4.高級用法:創建自定義鏡像,使用Dockerfile構建並運行。 5.優化與最佳實踐:使用多階段構建和DockerCompose,遵循編寫Dockerfile的最佳實踐。

Docker監控的核心在於收集和分析容器的運行數據,主要包括CPU使用率、內存使用、網絡流量和磁盤I/O等指標。通過使用Prometheus、Grafana和cAdvisor等工具,可以實現對容器的全面監控和性能優化。

DockerSwarm可用於構建可擴展和高可用性的容器集群。 1)初始化Swarm集群使用dockerswarminit。 2)加入Swarm集群使用dockerswarmjoin--token:。 3)創建服務使用dockerservicecreate--namemy-nginx--replicas3nginx。 4)部署複雜服務使用dockerstackdeploy-cdocker-compose.ymlmyapp。

如何利用Docker和Kubernetes進行企業應用的容器編排?通過以下步驟實現:創建Docker鏡像並推送到DockerHub。在Kubernetes中創建Deployment和Service以部署應用。使用Ingress管理外部訪問。應用性能優化和最佳實踐,如多階段構建和資源限制。

Docker常見問題可以通過以下步驟診斷和解決:1.查看容器狀態和日誌,2.檢查網絡配置,3.確保卷掛載正確。通過這些方法,可以快速定位並修復Docker中的問題,提升系統穩定性和性能。

Docker是DevOps工程師必備的技能。 1.Docker是開源的容器化平台,通過將應用程序及其依賴打包到容器中,實現隔離和可移植性。 2.Docker的工作原理包括命名空間、控制組和聯合文件系統。 3.基本用法包括創建、運行和管理容器。 4.高級用法包括使用DockerCompose管理多容器應用。 5.常見錯誤有容器無法啟動、端口映射問題和數據持久化問題,調試技巧包括查看日誌、進入容器和查看詳細信息。 6.性能優化和最佳實踐包括鏡像優化、資源限制、網絡優化和使用Dockerfile的最佳實踐。

Docker安全強化的方法包括:1.使用--cap-drop參數限制Linux能力,2.創建只讀容器,3.設置SELinux標籤。這些策略通過減少漏洞暴露面和限制攻擊者能力來保護容器安全。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版
好用的JavaScript開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。