ユーザー名とパスワードを使用してセルフホスト型レジストリに認証する
このステップでは、ユーザー名とパスワードを使用してセルフホスト型の Docker レジストリに認証する方法を学びます。Docker Hub がデフォルトのレジストリですが、組織内またはクラウドプロバイダー上にホストされているプライベートレジストリとやり取りする必要がある場合があります。
セルフホスト型レジストリは、Docker Hub のようなパブリックサービスを使用するのではなく、自分でセットアップし管理する Docker レジストリです。これは、セキュリティ、コンプライアンス、またはパフォーマンスの理由で行われることが多いです。
セルフホスト型レジストリに認証するには、同じ docker login
コマンドを使用しますが、レジストリのアドレスを指定する必要があります。形式は docker login <registry_address>
です。
この実験では、セルフホスト型レジストリをシミュレートします。プレースホルダーのアドレス myregistry.local
を使用します。実際のシナリオでは、これはレジストリの実際のドメイン名または IP アドレスになります。
~/project
ディレクトリでターミナルを開きます。
シミュレートしたセルフホスト型レジストリにログインするには、次のコマンドを実行し、your_registry_username
と your_registry_password
をそのレジストリに使用する仮の資格情報に置き換えます。
docker login myregistry.local
レジストリ myregistry.local
のユーザー名とパスワードの入力を求められます。
Login with your Docker ID to push and pull images from myregistry.local. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
Username: your_registry_username
Password: your_registry_password
仮のユーザー名とパスワードを入力します。この環境では myregistry.local
は実際に動作しているレジストリではないため、ログインはおそらくエラーメッセージを伴って失敗し、レジストリに到達できないか認証に失敗したことが示されます。これはこのシミュレーションでは想定されています。重要なのは、コマンドの構文と異なるレジストリを指定するプロセスを理解することです。
Error response from daemon: Get "http://myregistry.local/v2/": dial tcp: lookup myregistry.local on 127.0.0.53:53: no such host
レジストリが存在しないためログインは失敗しましたが、セルフホスト型レジストリに認証を試みるためのコマンド構文 docker login <registry_address>
は正しいです。
実際に動作しているセルフホスト型レジストリのシナリオでは、ログインが成功すると「Login Succeeded」メッセージが表示され、その特定のレジストリの資格情報が Docker 設定ファイル (~/.docker/config.json
) に保存されます。
Docker 設定ファイルを調べて、レジストリ情報がどのように保存されているかを見てみましょう。
cat ~/.docker/config.json
JSON 構造が表示されます。前のステップで Docker Hub に正常にログインした後、https://index.docker.io/v1/
のエントリが表示されるはずです。myregistry.local
に正常にログインした場合、そのレジストリアドレスの追加エントリが表示されます。
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "..."
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/..."
},
"credsStore": "desktop"
}
auths
セクションには、ログインした異なるレジストリの認証情報が含まれています。auths
の各キーはレジストリアドレスであり、値には認証の詳細が含まれています。
このステップでは、docker login
を使用する際にセルフホスト型レジストリのアドレスを指定する方法を示しました。