Docker API は、ソフトウェア システムのさまざまなコンポーネントを接続するための取り決めである docker のアプリケーション プログラム インターフェイスを指します。Docker には主に 3 つの外部 API があります: 1. Docker Registry API、2. Docker Hub API ; 3. Docker リモート API。
このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
1. API とは具体的に何ですか?
API という言葉は、Wikipedia では次のように説明されています。 アプリケーション プログラミング インターフェイス (英語: application programming Interface、略称 API) は、アプリケーション プログラミング インターフェイスとも呼ばれ、別のソフトウェア システムです。コンポーネントの接続用。この説明を読んでも、まだ少し混乱していると思いますが、それは問題ではなく、API とは何かをわかりやすく説明します。
私たちは誰もが携帯電話を持っていますが、携帯電話の電力が切れた場合、それを充電するための固定充電器と充電ケーブルを必ず見つけます。 Apple には Apple を使用し、Android には Android を使用します。ただし、Apple 携帯電話の充電に Android ケーブルを使用することは絶対にありません。その理由は非常に単純で、Apple 携帯電話には Lightning インターフェイスがあり、Android 端末にはマイクロ インターフェイスがあるからです。携帯電話を充電したり、データを転送したりする場合は、適切な充電ケーブルとデータ ケーブルを購入する必要がありますが、これがインターフェイスを最も簡単に理解するための方法です。
同様に、プログラム インターフェイスにも同じことが当てはまります。各プログラムには固定の外部標準インターフェースがあり、このインターフェースはプログラムを開発した開発者によって定義されており、接続する場合はそのインターフェース規格に従う必要があります。
2. REST とは
# API を勉強していると REST という言葉をよく見かけますが、英語の正式名称は Representational State です。移行。では、RESTとは何でしょうか? REST という用語は、Apache Foundation の会長である Roy Fielding 博士によって提案され、その中国語の意味は「プレゼンテーション層の状態変換」です。中国語は難解ですが、次のような観点から学ぶと、「休む」ということが理解できると思います。
2.1. プレゼンテーション層とは何ですか?
ここでのプレゼンテーション層とはリソースのプレゼンテーション層を指し、いわゆる「リソース」とはネットワーク上の特定の情報のことです。テキスト、動画、サービスなどをリソースとしてカウントできます。では、これらのリソースは何を識別し表現するために使用されるのでしょうか?たとえば、映画をダウンロードする場合には、対応する URI アドレスが必要ですし、オンライン小説を読む場合にも、対応する URI アドレスが必要になります。そして、このアドレスはユニークでユニークです。リソースはURIで識別され、ネットワーク上にリソースが「表現」されていることがわかります。そうすると、プレゼンテーション層の意味は、実は「リソース」を具体的に提示する形式ということになります。
2.2. 状態遷移とは何ですか?
常識的に考えて、オブジェクトの状態を変更したい場合は、必ず何らかの操作と手段が必要です。インターネット上のリソースについても同様で、映画をダウンロードする場合は、まずダウンロードしてから開いて楽しむ必要があります。ダウンロードや取得にはHTTPプロトコルが必要ですが、HTTPプロトコルにはGET、POST、PUT、DELETE(取得、作成、更新、削除)という4つの基本的な操作メソッドがあります。これら 4 つの基本的な方法を通じて、ネットワーク上のリソースに対していくつかの状態変換操作を実行できます。
つまり、REST はプレゼンテーション層の状態変換であり、上記 2 点を個別に理解して、それらを組み合わせることができます。これは、単純かつ大雑把に、メソッド URI リソースとして理解できます。
GET /movie/war/Pearl Harbor
DELETE /movie/war/Pearl Harbor
...
Docker の API も REST スタイルに従っているため、上記の 2 つの点を理解した後、Docker 独自の API の関連知識を学習し始めます。
まず、docker をリソースとして捉えますが、docker は API を通じて操作することができ、操作方法も http と同じです。
2 番目に、外部で使用できる Docker の API を理解する必要があります。ここで、Docker には公式に 3 つの主要な外部 API があります
1. Docker Registry API
これは、Docker イメージ ウェアハウスの API です。この API を操作することで、 、ミラー ウェアハウスを自由に自動化し、プログラムで管理できます。
2. Docker Hub API
Docker Hub API は、ユーザー管理操作用の API です。Docker Hub は、検証とパブリック名前空間を使用して、アカウント情報と認証を保存します。アカウントと認証アカウントを認証します。 API を使用すると、関連するユーザー リポジトリやライブラリ リポジトリに対する操作も可能になります。
3. Docker リモート API
この API は、Docker コマンド ライン クライアントに相当するホスト Docker サーバー API を制御するために使用されます。これを使用すると、Docker コンテナをリモートで操作でき、さらに重要なことに、プログラムを通じて Docker プロセスを自動的に操作および保守できます。
先ほども述べたように、Rest API の操作には http のメソッドが使用されます。では、これらのメソッドを具体的にどのように使用すればよいのでしょうか?ここでは、Docker API を操作して呼び出し、それを体験する一般的な方法をいくつか紹介します。これを体験する前に、Docker REST 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. ツールは、読みやすいように json をフォーマットするためにこのツールを借用しました)
docker API を有効にした後も、まだ疑問が残ります。つまり、docker の既存の API をどこでクエリできるのかということです。 docker は、Docker Registry API、Docker Hub API、Docker Remote API の 3 つの主要な API ライブラリを提供します。では、Docker Registry API の下にどのような API アドレスがあるのかなど、特定の詳細な API はどこで表示できるのでしょうか?画像をクエリするための API はありますか?削除されたものはありますか?実際、これらはすべて利用可能です。公式 Web サイトの API マニュアルに直接アクセスして確認できます。アドレスは https://docs.docker.com/engine/api/v1.38/## です。 # (どのバージョンを見たいですか? 最後の v1.38 をターゲットのバージョン番号に置き換えるだけです)
ここで、公式は API v1.12 より前のバージョンの使用を推奨していないことに注意してください。 v1.24 以降のバージョンを使用することをお勧めします。 ローカルの docker API バージョンを確認するには、docker version コマンドを使用できます: #4. docker API の操作方法1. 単純なcurlメソッド
LinuxではデフォルトでインストールされるCURLコマンドについては誰もがよく知っていると思います。 http をテストする多くの方法では、CURL を直接使用できます。 たとえば、docker イメージの詳細情報を確認する場合、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の形式にすると、結果の形式がより標準化され、読みやすくなります。 すべてのコンテナの表示 コンテナ:
$ curl -X GET http://127.0.0.1:8088/containers/json | python -mjson.toolコンテナの作成: ここでは、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コンテナの開始/停止/再起動コンテナ:
$ 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 は、docker と呼ばれる Python 用の非常に強力なライブラリも提供します。公式の Python SDK アドレスにログインして、Python が具体的にどのように Docker を操作するかを知ることができます。 アドレスは:https://docker-py.readthedocs.io/en/stable/
2.1. docker python ライブラリをインストールします $ pip install docker2.2.import docker client = docker.DockerClient(base_url='unix://var/run/docker.sock', version="auto") client.containers.run("ubuntu", "echo hello world")の使用を開始しますこれは非常に単純な使用例であり、分析できます: 最初の行は、3 番目の行の導入を示しています。パーティーライブラリドッカー。 2 行目は、base_url (Docker サーバーのアドレス) やバージョン (auto は docker のバージョンを自動的に確認できます) など、Docker サーバーの基本情報を構成するために使用されます。 3 行目は、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 ビデオ チュートリアル 」
以上がドッカーAPIとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。