13

良い一日!

docker レジストリに関する多くの情報を調べましたが、まだいくつか質問があります...インデックスとレジストリに関するいくつかのことを理解するのを手伝ってください。

  1. プライベート リポジトリ用の docker-registry をインストールしました。そして、私はスタンドアロンモードtrueで作業しました。私が理解しているように、docker レジストリはユーザーを認証できません。インデックスにアクセス許可と認証を要求します。そのため、スタンドアロン モードを無効にしたため、docker-registry は index.docker.io で認証する必要がありますが、機能しません。レジストリを使用すると、必要なイメージをプッシュおよびプルできます。問題は、なぜ docker-registry が index.docker.io によって私を認証しようとしないのかということです。

  2. docker-registry が index.docker.io を介して私を認証する場合、認証パラメーターはどこに保存されますか? つまり、ユーザー vozerov に private.repo.domain:5000/vozerov リポジトリにのみプッシュする権限を与えたい場合です。

  3. Docker はインデックスを検索します。したがって、プライベート リポジトリでイメージを検索する場合は、新しいプライベート リポジトリがあることを index.docker.io に通知する必要があります。それは本当ですか、それとも私は何か間違ったことを言いますか?

  4. github で docker-index プロジェクトを見つけました - https://github.com/ekristen/docker-index。index.docker.io の代替です。インストールしてログインすると、docker search コマンドはプライベート インデックスまたは index.docker.io を検索しますか?

更新日:

今夜は docker-registry で多くの作業を行ったので、少し混乱しています。

  1. スタンドアロン モードが true の場合、disable_token_auth はどのバリアントでも使用されません。だから私たちはできる:

    1.1認証なしでこのレポを使用します(プルおよびプッシュ権限を誰にでも)。

    1.2 nginx および docker login my.registry.com で基本認証を使用して、基本認証情報を持つすべてのユーザーがプッシュおよびプルできるようにします。したがって、このモードでは権限がありません。

  2. スタンドアロン モードが false の場合、docker-registry は index.docker.io と通信する必要がありますが、そうではありません。2 つのバリアント:

    2.1. disable_auth_token が true の場合 - 405 エラー (メソッドは許可されていません) が表示されますが、これは、誰でもイメージのプッシュまたはプルを許可することを意味しますか?

    2.2. disable_auth_token が false の場合 - 405 エラーが発生します...

また、2.1 および 2.2 の docker login my.registry.com が機能しない場合、404 エラーが表示されます...私の設定ミスでしょうか?

4

3 に答える 3

1

1. プライベート リポジトリ用の docker-registry をインストールしました。そして、私はスタンドアロンモードtrueで作業しました。私が理解しているように、docker レジストリはユーザーを認証できません。インデックスにアクセス許可と認証を要求します。そのため、スタンドアロン モードを無効にしたため、docker-registry は index.docker.io で認証する必要がありますが、機能しません。レジストリを使用すると、必要なイメージをプッシュおよびプルできます。問題は、なぜ docker-registry が index.docker.io によって私を認証しようとしないのかということです。

セットアップしたプライベート docker レジストリは、セットアップしていないため、認証されていません。nginx をリバース プロキシとして使用して認証をセットアップする必要があります。docker クライアントは SSL を使用しない基本認証をサポートしていないため、リバース プロキシにも SSL をセットアップする必要があります。

プッシュまたはプルするときは、docker クライアントを使用しています。任意のレジストリ、セットアップしたプライベート レジストリ、および Docker ハブに接続できます。考慮すべき点がいくつかあります。

  • docker クライアントから docker search を起動すると、デフォルトで docker ハブが検索され、公開されている限り、そこから任意のイメージを取得できます。

  • Docker Hub にイメージをプッシュするには、ログインが必要です。

  • プライベート Docker レジストリを検索する場合は、次の形式でそのレジストリを検索するように Docker クライアントに指示する必要があります。

      docker search private.repo.domain:5000/vozerov 
    
  • ここで、実際に検索するレジストリに応じて、プライベート レジストリをリバース プロキシでセットアップする場合は独自の認証が必要になり、Docker Hub を使用してイメージをプッシュする場合はログインも必要になります。

  • プッシュ/プル/検索できる理由は、デフォルトで Docker Hub を指定して使用していなくても、ドメイン名:ポート/イメージ名を指定することによってのみ、プライベート レジストリでこれらのアクションを実行するようドッカー クライアントに指示しているためです。イメージをプッシュしようとしない限り、認証の問題は発生しません。

2.docker-registry が index.docker.io を介して私を認証する場合、認証パラメーターはどこに保存されますか? つまり、ユーザー vozerov に private.repo.domain:5000/vozerov リポジトリにのみプッシュする権限を与えたい場合です。

  • 認証パラメーターは、Docker クライアント マシンの次のファイルに保存されます (隠しファイルなので、ls -la を使用します)。ファイル名: 「.dockercfg」

  • そのファイル内には、正常にログインしようとしたレジストリのログイン資格情報の詳細があります。

    {
            "your_domain.com": {
                    "auth": "dXNlcjE6cGFzc3dvcmQxMjM="
                    "email": ""
    }
    
  • 「auth」は、Base 64 でエンコードされた (ユーザー名:パスワード) 資格情報です。

  • Docker プライベート レジストリは、(リバース プロキシを使用した) ログインのみを提供します。本格的なユーザー ベースの認証/承認またはアクセス制御システムが必要な場合は、Artifactory やコア OS エンタープライズ レジストリなどのソリューションを検討できます。

3.Docker はインデックスを検索します。したがって、プライベート リポジトリでイメージを検索する場合は、新しいプライベート リポジトリがあることを index.docker.io に通知する必要があります。それは本当ですか、それとも私は何か間違ったことを言いますか?

  • プライベート レジストリを検索するように指定しない場合、Docker クライアントは index.io を検索します。これが docker のデフォルトの動作です。プライベート Docker レジストリは、公式の Docker インデックスとはまったく別のものであり、まったく関係ありません。Docker クライアントでプライベート レジストリを検索する場合は、ネイティブまたは curl で使用できるいくつかのコマンドを次に示します。
  • curl の使用 (apt-get install jq):

    curl -s -X GET http://private.repo.domain:5000/v1/search | jq '.results[].name'
    
  • ドッカー検索の使用:

    docker search private.repo.domain:5000/<search_keyword>
    

4.github で docker-index プロジェクトを見つけました - https://github.com/ekristen/docker-index。index.docker.io の代替です。インストールしてログインすると、docker search コマンドはプライベート インデックスまたは index.docker.io を検索しますか?

  • Docker が新しいレジストリを展開しているため、そのプロジェクトは停止しているようです。実際に試したことがないので、どのレジストリを検索するのかわかりません。Docker Hubにはすでに独自のインデックスがあるため、プライベートレジストリと統合するものだと思います。推測すると、プライベートレジストリが検索されます。
于 2015-04-07T23:49:47.870 に答える
0

Docker レジストリは、docker-images を管理します。Docker インデックスは認証を管理します。Docker レジストリはオープン ソースですが、Docker インデックスはオープン ソースではありません。

docker-registry をデプロイする場合は、それに認証を実装する必要があります。

Docker インデックスはプライベート docker-registry を提供できます。これを確認してください。

于 2014-08-19T18:38:10.050 に答える