web-dev-qa-db-ja.com

ログイン/パスワードでdocker-registryを使用するにはどうすればよいですか?

私はdocker-registryをlocalhostに持っており、次のコマンドでプル/プッシュできます:docker Push localhost:5000/someimagedocker Push username@password:localhost:5000/someimageのようなコマンドでプッシュする方法は?

12
kvendingoldo

この解決策は私にとってうまくいきました:最初に、私が働きたかったフォルダレジストリを作成しました:

$ mkdir registry
$ cd registry/

次に、資格情報を保存するフォルダを作成します

$ mkdir auth

次に、Dockerコンテナーを使用してhtpasswdファイルを作成します。このhtpasswdファイルには、私の資格情報と暗号化されたpasswdが含まれます。

$ docker run --entrypoint htpasswd registry:2 -Bbn myuser mypassword > auth/htpasswd

検証します

$ cat auth/htpasswd
myuser:$2y$05$8IpPEG94/u.gX4Hn9zDU3.6vru2rHJSehPEZfD1yyxHu.ABc2QhSa

資格情報は問題ありません。次に、資格情報をレジストリに追加する必要があります。ここで私は私の認証ディレクトリを私のコンテナ内にマウントします:

docker run -d -p 5000:5000 --restart=always --name registry_private  -v `pwd`/auth:/auth  -e "REGISTRY_AUTH=htpasswd"  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd"  registry:2

テスト:

$ docker Push localhost:5000/busybox
The Push refers to a repository [localhost:5000/busybox]
8ac8bfaff55a: Image Push failed
unauthorized: authentication required

認証する

$ docker login localhost:5000
Username (): myuser
Password:
Login Succeeded

プッシュを再試行

$ docker Push localhost:5000/busybox
The Push refers to a repository [localhost:5000/busybox]
8ac8bfaff55a: Pushed
latest: digest: sha256:1359608115b94599e5641638bac5aef1ddfaa79bb96057ebf41ebc8d33acf8a7 size: 527

認証情報は〜/​​ .docker/config.jsonに保存されます:

cat ~/.docker/config.json

{
    "auths": {
        "localhost:5000": {
            "auth": "bXl1c2VyOm15cGFzc3dvcmQ="
        }
    }

資格情報を使用するときは、httpsを使用することをお勧めします。

TLS(このアプローチで自己署名した証明書)の使用方法に関するブログは次のとおりです。 https://medium.com/@lvthillo/deploy-a-docker-registry-using-tls-and-htpasswd-56dd57a1215a

22
lvthillo

これをdocker confファイルに設定してみてください~/.docker/config.json

{
        "auths": {
                "https://localhost:5000/someimage": {
                        "auth": "username",
                        "email": "password"
                }
        }
}
2
Ze Rubeus