私はdocker-registryをlocalhostに持っており、次のコマンドでプル/プッシュできます:docker Push localhost:5000/someimage
docker Push username@password:localhost:5000/someimage
のようなコマンドでプッシュする方法は?
この解決策は私にとってうまくいきました:最初に、私が働きたかったフォルダレジストリを作成しました:
$ 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
これをdocker confファイルに設定してみてください~/.docker/config.json
{
"auths": {
"https://localhost:5000/someimage": {
"auth": "username",
"email": "password"
}
}
}