搜尋
首頁運維Dockerdocker api是什麼

docker api是什麼

Dec 30, 2021 pm 12:07 PM
apidocker

docker api指的是docker的應用程式接口,是軟體系統不同組成部分銜接的約定,docker主要有三大對外api:1、Docker Registry API;2、Docker Hub API;3、Docker Remote API。

docker 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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Linux上的Docker:最佳實踐和技巧Linux上的Docker:最佳實踐和技巧Apr 13, 2025 am 12:15 AM

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

將Docker與Linux一起使用:綜合指南將Docker與Linux一起使用:綜合指南Apr 12, 2025 am 12:07 AM

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

Docker監視:收集指標和跟踪集裝箱健康Docker監視:收集指標和跟踪集裝箱健康Apr 10, 2025 am 09:39 AM

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

Docker群:建築物可擴展和彈性的容器簇Docker群:建築物可擴展和彈性的容器簇Apr 09, 2025 am 12:11 AM

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

Kubernetes的Docker:用於企業應用程序的集裝箱編排Kubernetes的Docker:用於企業應用程序的集裝箱編排Apr 08, 2025 am 12:07 AM

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

Docker故障排除:診斷和解決常見問題Docker故障排除:診斷和解決常見問題Apr 07, 2025 am 12:15 AM

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

Docker面試問題:Ace您的DevOps工程採訪Docker面試問題:Ace您的DevOps工程採訪Apr 06, 2025 am 12:01 AM

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

Docker安全硬化:保護您的容器免受漏洞Docker安全硬化:保護您的容器免受漏洞Apr 05, 2025 am 12:08 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SecLists

SecLists

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

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

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