docker secret inspect コマンドを使ってシークレットの詳細を表示する方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、docker secret inspect コマンドを使用して Docker シークレットの詳細情報を表示する方法を学習します。まず、機密データを管理するための Docker シークレットを作成します。次に、シークレットの名前と一意の ID の両方を使用してこのシークレットを調査する方法を探ります。最後に、Go テンプレートを使用して inspect コマンドの出力を整形し、特定の情報を抽出する方法を学習します。この実践的な経験を通じて、Docker シークレットを効果的に管理し、トラブルシューティングするスキルを身につけることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/ls -.-> lab-555221{{"docker secret inspect コマンドを使ってシークレットの詳細を表示する方法"}} docker/inspect -.-> lab-555221{{"docker secret inspect コマンドを使ってシークレットの詳細を表示する方法"}} docker/create -.-> lab-555221{{"docker secret inspect コマンドを使ってシークレットの詳細を表示する方法"}} end

Docker シークレットの作成

このステップでは、Docker シークレットを作成する方法を学びます。Docker シークレットは、パスワード、SSH キー、TLS 証明書などの機密データを管理するために使用されます。シークレットは保存時と転送時に暗号化され、アクセスが許可されたサービスのみがアクセスできます。

Docker シークレットを作成するには、docker secret create コマンドを使用します。このコマンドは 2 つの引数を取ります。シークレットの名前と、シークレットデータを含むファイルへのパスです。

内容が "thisisasecret" の my_secret という名前のシンプルなシークレットを作成しましょう。まず、~/project ディレクトリに secret.txt という名前のファイルを作成し、シークレットの内容を記述します。

echo "thisisasecret" > ~/project/secret.txt

次に、docker secret create コマンドを使用して Docker シークレットを作成します。

docker secret create my_secret ~/project/secret.txt

新しく作成されたシークレットの ID がコンソールに表示されるはずです。これは、シークレットが正常に作成されたことを示しています。

名前でシークレットを調査する

このステップでは、名前を使用して Docker シークレットを調査する方法を学びます。docker secret inspect コマンドを使用すると、シークレットの ID、作成日、ラベルなどの詳細情報を表示できます。

名前でシークレットを調査するには、docker secret inspect コマンドの後にシークレットの名前を指定します。前のステップで、my_secret という名前のシークレットを作成しました。このシークレットを調査してみましょう。

docker secret inspect my_secret

このコマンドの出力は、my_secret シークレットの詳細情報を含む JSON オブジェクトになります。IDNameCreatedAtUpdatedAtSpec などのフィールドが表示されます。

このコマンドは、シークレットが作成された後にその詳細を確認したり、シークレットに関連する問題をトラブルシューティングしたりするのに便利です。

ID でシークレットを調査する

このステップでは、ID を使用して Docker シークレットを調査する方法を学びます。名前で調査するのは便利ですが、自動化スクリプトやログを扱う際には、シークレットの ID しか持っていない場合があります。

ID でシークレットを調査するには、docker secret inspect コマンドの後にシークレットの ID を指定します。シークレットの ID は、docker secret create コマンドの出力から取得するか、docker secret ls を使用してシークレットを一覧表示することで取得できます。

最初のステップで作成した my_secret の ID を取得してみましょう。

docker secret ls

出力には、シークレットの ID と名前が表示される表が表示されます。my_secret の ID をコピーします。ID は abcdef1234567890 のような形式になります。

次に、YOUR_SECRET_ID をコピーした実際の ID に置き換えて、調査コマンドを実行します。

docker secret inspect YOUR_SECRET_ID

名前で調査したときと同じ詳細な JSON 出力が表示されます。これは、名前または ID のどちらを使用してもシークレットを調査できることを示しています。

Go テンプレートを使用して出力をフォーマットする

このステップでは、Go テンプレートを使用して docker secret inspect コマンドの出力をフォーマットする方法を学びます。これは強力な機能で、JSON 出力から特定の情報を抽出し、カスタム形式で表示することができます。

Go テンプレートは、JSON 構造内のフィールドにアクセスするためのシンプルな構文を使用します。ドット表記を使用してフィールドを参照できます。たとえば、.ID で ID フィールドにアクセスしたり、.Spec.NameSpec オブジェクト内の名前にアクセスしたりできます。

出力をフォーマットするには、--format フラグの後に Go テンプレート文字列を指定します。Go テンプレートを使用して my_secret の ID と名前のみを抽出してみましょう。

docker secret inspect my_secret --format 'ID: {{.ID}}, Name: {{.Spec.Name}}'

出力は次のようになります。

ID: <secret_id>, Name: my_secret

<secret_id> を実際のシークレットの ID に置き換えてください。

Go テンプレート内で様々な関数や制御構造を使用して、より複雑な出力形式を作成することができます。たとえば、ラベルを反復処理したり、条件付きで情報を表示したりすることができます。

このフォーマット機能は、スクリプトで Docker コマンドの出力を処理したり、他のツールと統合する必要がある場合に特に有用です。

まとめ

この実験では、シークレットを使用して Docker 内の機密データを管理する方法を学びました。まず、ファイルから my_secret という名前の Docker シークレットを作成し、シークレットは暗号化されており、承認されたサービスのみがアクセスできることを理解しました。

作成後、docker secret inspect コマンドを使用してシークレットの詳細を表示する方法を調べました。シークレットの名前 (my_secret) で調査する練習を行い、これによりシークレットの ID、作成日、その他の仕様などの情報を含む JSON 出力が得られました。これは、シークレットの詳細を確認するための inspect コマンドの基本的な使い方を示しています。