Docker Engineは、コンテナーランタイムに機能を追加できるプラグインシステムをサポートしています。新しいストレージドライバー、ネットワークスタック、ロギングシステムのプラグインはすべて無料で入手できます。
最新バージョンのDockerEngineには、CLI内でプラグインを管理するために必要なすべてのものが含まれています。このガイドでは、この「管理された」プラグインシステムに重点を置いています。従来のプラグインシステムを使用するプラグインを手動でインストールして維持する必要があります。
プラグインは、Docker Engineを拡張して、一般的なインストールで出荷するにはあまりにも具体的な新機能を備えています。通常、プラグインを直接操作することはありません。プラグインをインストールすると、既存のDockerコマンドを実行するときにプラグインが提供するリソースを参照できます。
プラグインには主に3つのタイプがあります:
- ロギング –これらのプラグインは新しいロギングドライバーを追加し、DockerEngineとホストマシン以外の場所にログを保存できるようにします。
- ネットワーク –ネットワークプラグインは、新しいネットワークタイプと関連機能のサポートを追加できます。
- ボリューム –ストレージプラグインは、追加のファイルシステムとボリュームドライバーをDockerにもたらし、永続データのオプションを増やします。
これらのコア領域外の機能を備えたプラグインも利用できます。プラグインはコミュニティベンダーによって作成されています。パブリックプラグインAPIとGoSDKを使用して独自に作成できます。
プラグインはDockerHubを介して配布されます。利用可能なプラグインを見つけるには、[探索]ページに移動し、上部の[プラグイン]タブを選択します。現在、600を超えるプラグインが利用可能です。
独自のプラグインを作成する場合は、docker plugin push
を使用してDockerHubに送信できます。 指図。これは、イメージをパブリックレジストリにプッシュするのと同じように機能します。 docker plugin create
を実行する必要があります まず、プラグインのマニフェストとファイルシステムを送信可能なパッケージに変換します。プラグインのオーサリングの詳細については、Dockerドキュメントをご覧ください。
プラグインはdocker plugin install
でインストールされます 指図。これは、DockerHubプラグインの名前を引数として受け入れます。
docker plugin install store/example/example-plugin:version
プラグイン参照は、store/
で始まる画像参照のように見えます 。インストールするプラグインのバージョンを指定する場合も、同じタグ付けの原則が適用されます。画像とは異なり、バージョンを省略してlatest
を自動的にプルすることはできません タグ。
プラグインのバージョン番号を見つけて、Docker Hubページの[セットアップ手順]ボタンをクリックすると、すぐに実行できるインストールコマンドをコピーできます。無料のプラグインを使用すると、右上に通常のコピーアンドペーストボックスが表示された新しい画面に進むことができます。ターミナルでコマンドを実行して、プラグインのインストールを開始します。
プラグインは通常、機能を提供できるようにホスト権限へのアクセスを要求します。例として、ネットワーキングプラグインはDockerのhost
にアクセスできる必要があります 新しいリソースを接続できるようにネットワーク。 y
と入力して、許可プロンプトを確認します Enterキーを押して、インストールを完了します。 --grant-all-permissions
を追加すると、プロンプトをスキップできます。 install
にフラグを立てます 指図;これは非対話型のインストールには理想的ですが、プラグインが新しい機能で更新された場合、意図しない許可が付与されるリスクがあります。
プラグインはインストール後に自動的に有効になります。プラグインを有効にすると、プレインストールスクリプトの実行が許可されます。 --disable
を使用します プラグインをデフォルトで無効状態にし、後で手動でアクティブ化するまでプラグインを非アクティブのままにするフラグ。
インストールすると、docker plugin ls
を実行するとプラグインが表示されます :
docker plugin ls
単一のプラグインに関する詳細情報は、docker inspect
から入手できます。 指図。これはプラグインIDまたはタグを受け入れ、プラグインのマニフェストを説明する詳細なJSONを表示します。
docker inspect eccffc
Docker CLIには、オフライン時にプラグインをインストールするための組み込みの方法がありません。それでも、最初にネットワーククライアントにプラグインをインストールしてから、プラグインファイルをオフラインシステムにコピーすることで、エアギャップのあるDockerインストールにプラグインを追加できます。
インストールされているプラグインは、/var/lib/docker/plugins
内にあります。 ホスト上のディレクトリ。各プラグインは、そのIDで名前が付けられた独自のサブディレクトリを取得します。これらのIDは、docker plugin ls
からの出力に表示されます。 コマンド。
プラグインは有効または無効にできます。 ls
の最後の列に現在のステータスが表示されます 出力。無効にしたプラグインは読み込まれないため、インストールされていないかのように動作します。
docker plugin enable
を使用します およびdocker plugin disable
プラグインのステータスを変更するコマンド。コマンドの唯一の引数として、インストールされているプラグインの1つのIDを指定します。
docker plugin enable eccffc
プラグインがDockerEngine構成またはコンテナの1つによってアクティブに使用されている場合、プラグインを無効にできない可能性があります。 -f
を追加する フラグはプラグインを強制的に無効にしますが、意図しないコンテナの終了のリスクがあるため、慎重に使用する必要があります。
プラグインはdocker plugin rm
でアンインストールされます 指図。プラグインのIDまたは名前を指定して、Dockerからプラグインを完全に削除します。 rm
disable
と同じ動作をします アクティブに使用されているプラグインを処理し、その後強制的に削除する場合。
Dockerのプラグインシステムには、プラグイン作成者がカスタマイズ可能な設定を公開するための統合メカニズムが含まれています。ユーザーは、docker plugin set
を使用してこれらの設定を変更できます。 コマンド:
docker plugin set example-plugin setting-key=new-value
example-plugin
を置き換えます ターゲットとするプラグインのIDまたは名前を使用します。プラグインのsetting-key
の値 設定はnew-value
に更新されます 。
利用可能な設定は、プラグインごとに当然異なります。それらは、DockerHubのプラグインの説明に記載されている必要があります。 Docker CLIには、プラグインで使用可能なすべての設定を表示するための組み込みコマンドはありませんが、docker plugin inspect
に表示されます。 出力。 Settings
を探します プラグインのJSON表現のフィールド。 Name
のオブジェクトが含まれます およびSettable
CLIを介して変更できるオプションのフィールド。
プラグインはdocker plugin update
で更新されます 指図。他のコマンドと同様に、プラグインIDまたはタグを引数として取ります。
プラグインをアップグレードすると、DockerHubで利用可能な最新バージョンがダウンロードおよびインストールされます。すでに最新のリリースを使用している場合、コマンドは現在のバージョンを再インストールします。プラグインに必要な新しい権限を付与するように求められます。 --grant-all-permissions
インタラクティブな入力が不可能な環境では、プロンプトをスキップするためにフラグが受け入れられます。
1つのコマンドでシステム上のすべてのプラグインを更新する方法はありません。プラグインのベンダーからのリリースアナウンスを購読し、利用可能になったときにインストールに更新を適用することをお勧めします。これにより、プラグインの安全性とサポートが維持されます。
Dockerのプラグインエコシステムを使用すると、DockerEngineに機能を追加できます。プラグインはDockerHubに常駐し、ターミナルからインストールできます。 CLIにはプラグインアップデーターが組み込まれていますが、カタログ全体ではなく、一度に1つのプラグインでのみ機能します。
プラグインの使用方法と管理方法がわかったので、Docker Hubの参照を開始して、ワークフローを強化するためのオプションを見つけることができます。 Elastic LoggingプラグインはDockerコンテナログをElasticスタッククラスターにストリーミングし、vSphere forDockerでは永続ボリュームにVMWarevSphereストレージを使用でき、WeaveNetはマルチキャスト暗号化ネットワーキングをDockerにもたらします。必要なものが見つからない場合は、プラグインAPIを使用して、ハブを介してより幅広いコミュニティに公開できる独自のソリューションを作成してみてください。