docker logout コマンドを使ってレジストリからログアウトする方法

DockerDockerBeginner
今すぐ練習

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

はじめに

この実験では、docker logout コマンドを使用して Docker レジストリから安全にログアウトする方法を学びます。まず、docker logout コマンドの目的と、保存された資格情報を削除する重要性を理解します。次に、デフォルトの Docker レジストリ (Docker Hub) からのログアウト方法を調べ、最後に、特定の非デフォルトのレジストリからのログアウト方法を学びます。この実践的な実験では、Docker レジストリのログインセッションを管理する実際の手順を案内します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/SystemManagementGroup -.-> docker/login("Log into Docker Registry") docker/SystemManagementGroup -.-> docker/logout("Log out from Docker Registry") subgraph Lab Skills docker/login -.-> lab-555167{{"docker logout コマンドを使ってレジストリからログアウトする方法"}} docker/logout -.-> lab-555167{{"docker logout コマンドを使ってレジストリからログアウトする方法"}} end

docker logout の目的を理解する

このステップでは、docker logout コマンドの目的を理解します。docker login コマンドを使用して Docker レジストリにログインすると、資格情報がシステムに保存されます。これにより、毎回ユーザー名とパスワードを再入力することなく、レジストリからイメージをプッシュしたりプルしたりできます。ただし、セキュリティ上の理由から、特に共有環境では、また作業を完了した後は、レジストリからログアウトすることが重要です。docker logout コマンドは、これらの保存された資格情報を削除するために使用されます。

まず、現在どの Docker レジストリにログインしているかを確認しましょう。これは、認証が必要なイメージをプルしてみるか、Docker が資格情報を保存する設定ファイルを確認することで行えます。Docker 設定のデフォルトの場所は ~/.docker/config.json です。

cat コマンドを使用してこのファイルの内容を表示できます。

cat ~/.docker/config.json

ログインしている場合、"auths": { ... } のようなセクションが表示され、ログインしているレジストリに関する情報と暗号化された資格情報が含まれます。ログインしていない場合、auths セクションは空または存在しない可能性があります。

docker logout コマンドは簡単です。引数を指定せずに実行すると、デフォルトの Docker レジストリ(通常は Docker Hub)からログアウトします。

ログインをシミュレートし(ここでは実際にログインすることはなく、ログアウトの理解に焦点を当てます)、docker logout がどのように機能するかを理解しましょう。docker login を実行したと想像してください。~/.docker/config.json ファイルにはログイン情報が更新されます。

ここで、デフォルトのレジストリ(Docker Hub)からログアウトするには、次のコマンドを実行するだけです。

docker logout

このコマンドを実行すると、Docker はデフォルトのレジストリの資格情報を ~/.docker/config.json ファイルから削除します。これは、認証が必要な Docker Hub のイメージをプッシュまたはプルするには、再度ログインする必要があることを意味します。

次のステップでは、実際にログインとログアウトの操作を行い、docker logout コマンドの効果を確認します。

デフォルトのレジストリからログアウトする

このステップでは、デフォルトの Docker レジストリである Docker Hub からログアウトする練習を行います。この実験環境では明示的にログインしていませんが、docker logout コマンドは既存の資格情報を削除するように設計されています。ログインしていない状態で docker logout を実行すると、ログインしていないことを示すメッセージが表示されます。これは期待される動作であり、コマンドが資格情報を確認し、必要に応じて削除する機能が正しく動作していることを確認します。

まず、デフォルトのレジストリからログアウトしてみましょう。~/project ディレクトリでターミナルを開き、次のコマンドを実行します。

docker logout

次のような出力が表示されるはずです。

Not logged in to any registry

このメッセージは、~/.docker/config.json ファイルにデフォルトのレジストリ(Docker Hub)の保存された資格情報がなかったことを確認します。もしログインしていた場合、出力はログアウトが成功したことを示します。

docker logout の効果をさらに理解するために、ログアウトを試みた後に再度 ~/.docker/config.json ファイルを調べてみましょう。

cat ~/.docker/config.json

auths セクションが存在し、デフォルトのレジストリの資格情報が含まれていた場合、現在は空になっているか、https://index.docker.io/v1/ のエントリが削除されていることがわかります。ログインしていなかったため、ファイルの内容は以前と同じで、おそらく auths セクションは空または存在しないはずです。

このステップでは、引数を指定せずに docker logout を使用する基本的な方法を示しています。これはデフォルトの Docker Hub レジストリを対象としています。次のステップでは、特定の非デフォルトのレジストリからログアウトする方法を探ります。

特定のレジストリからログアウトする

このステップでは、デフォルトの Docker Hub 以外の特定の Docker レジストリからログアウトする方法を学びます。これは、複数のレジストリ(例えば、企業のプライベートレジストリやクラウドプロバイダーのコンテナレジストリ)を使用する場合に便利です。

特定のレジストリからログアウトするには、docker logout コマンドにレジストリのホスト名を引数として指定する必要があります。

この実験では特定のプライベートレジストリを設定していないため、コマンドの構文を示すために架空の例を使用します。my - private - registry.example.com にあるレジストリにログインしていたと想像してください。この特定のレジストリからログアウトするには、次のコマンドを使用します。

docker logout my-private-registry.example.com

このコマンドを実行すると、Docker は ~/.docker/config.json ファイル内で my - private - registry.example.com に関連付けられた資格情報を探して削除します。もしその特定のレジストリにログインしていなかった場合、Docker はその旨を通知します。

存在しないレジストリからログアウトしてみることでこれをシミュレートしましょう。これにより、コマンドの構造と、設定ファイルにレジストリが見つからない場合の期待される出力がわかります。

docker logout non-existent-registry.example.com

おそらく次のような出力が表示されます。

Not logged in to non-existent-registry.example.com

このメッセージは、Docker が non - existent - registry.example.com の資格情報を探して削除しようとしたが、何も見つからなかったことを確認します。

特定のレジストリからログアウトする機能は、異なるイメージソースへのアクセスを管理し、不要な保存された資格情報を削除することでセキュリティを維持するために重要です。

まとめると、引数なしの docker logout はデフォルトの Docker Hub からログアウトし、docker logout <registry - hostname> は特定のレジストリからログアウトします。

まとめ

この実験では、セキュリティ上の理由から保存された Docker レジストリの資格情報を削除するために不可欠な docker logout コマンドの目的を学びました。docker login でログインすると、資格情報が ~/.docker/config.json に保存されることを理解しました。また、このファイルをチェックしてログイン状態を確認する方法も学びました。

次に、docker logout コマンド自体に焦点を当てました。引数なしで docker logout を実行すると、設定ファイルからデフォルトの Docker レジストリ(Docker Hub)の資格情報が削除され、そのレジストリからログアウトします。これにより、デフォルトのレジストリで認証が必要な後続の操作では、新たなログインが必要になります。