Docker CLI Plugin とは

14701 ワード

概要

Docker CLI Pluginってご存知でしょうか?

つい最近GAとなったDocker Compose V2[1]やこちらも最近発表されたdocker sbomコマンド[2]Docker CLI Pluginとして提供されています。
こいつがなんなのかよく分かってなかったので調べてみました。

Docker CLI Plugin

Dockerコマンドにプラグインとしてサブコマンドを追加して機能を拡張できる機構です。
Docker v19.03から追加されているようです。
けっこう前からあるんですね、まったく知りませんでした。

プラグインの使用例
$ docker compose up

$ docker sbom イメージ名

docker infoコマンドを叩くと現在インストールされているプラグインが表示できます

$ docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc., v0.8.2)
  compose: Docker Compose (Docker Inc., v2.4.1)
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
  scan: Docker Scan (Docker Inc., v0.17.0)

プラグインに必要な要素

Docker CLI Pluginは以下の要件を満たしている必要があります。

  • プラグイン名がdocker-で始まっていること
  • docker-cli-plugin-metadataサブコマンドが実装されていること

Metadataのスキーマ

docker-cli-plugin-metadataサブコマンドは、以下のMetadata構造体に従ったJSONを出力するように実装します

https://github.com/docker/cli/blob/4cc4385075205409c835454f6e5055147d8495b4/cli-plugins/manager/metadata.go

参考までにDocker Compose V2では以下のようになっていました

Docker Compose V2 の例
{
  "SchemaVersion": "0.1.0",
  "Vendor": "Docker Inc.",
  "Version": "v2.3.3",
  "ShortDescription": "Docker Compose"
}

プラグインのインストール

docker-からはじまる実行ファイルを特定のディレクトリに配置することで、Dockerコマンドのサブコマンドしてプラグインが使えるようになります。

  • ユーザーごとのインストールの場合 ➡ $HOME/.docker/cli-plugins/
  • システムへのインストールの場合 ➡ /usr/local/lib/docker/cli-plugins/

プラグインの作り方

Docker CLIのリポジトリに、Docker CLI Pluginのサンプルコードがあったのでこれを参考にしました。