Untuk menjalankan perintah docker login secara non-interaktif, Anda dapat menyetel flag --password-stdin untuk memberikan kata sandi melalui STDIN. Menggunakan STDIN mencegah kata sandi berakhir di riwayat shell, atau file log.
$ echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_HOST
Saat Anda masuk ke registri pribadi Anda, docker otomatis membuat file $HOME/.docker/config.json File tersebut memiliki info Kredensial, sehingga Anda dapat menyimpan file dan menyalin ke host mana pun saat Anda ingin masuk ke registri.
Isi filenya seperti ini:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Pengaya Jika Anda ingin masuk ke registri multi buruh pelabuhan di satu server, cukup tambahkan info autentikasi lainnya. Seperti ini:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
},
"example1.com":{
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Sekarang Anda dapat mendorong dan menarik gambar dari example.com dan example1.com.
Docker 18 dan seterusnya
Sekarang ada cara yang didokumentasikan secara resmi untuk melakukan ini:
cat ~/my_password.txt | docker login --username foo --password-stdin
Docker 1.11 hingga Docker 17
Anda dapat meneruskan semua argumen pada baris perintah:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST
Jika Anda tidak menentukan DOCKER_HOST
, Anda akan mendapatkan repo Docker utama. Jika Anda mengabaikan salah satu argumen, Anda akan dimintai argumen tersebut.
Lebih lama dari 1,11
Jalur yang sama seperti di atas, kecuali Anda perlu juga berikan --email
bendera. Konten ini sebenarnya tidak dicentang, jadi semuanya baik-baik saja:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST --email [email protected]
Untuk setiap orang yang lewat secara acak yang mungkin tersandung ke dalam ini mencari cara untuk menggunakan ini terhadap registri kontainer lingkungan Openshift (Docker), Anda dapat menggunakan yang berikut ini untuk memberikan URI registri bersama dengan kredensial untuk masuk ke dalamnya menggunakan token Openshift.
$ echo "$(oc whoami -t)" | docker login -u $USER --password-stdin \
$(oc get route docker-registry -n default --no-headers | awk '{print $2}')
Login Succeeded
Hal di atas melakukan 3 hal:
- Token pass diambil dari Openshift
oc whoami -t
-
Menentukan URI registri Openshift
$(oc get route docker-registry -n default --no-headers | awk '{print $2}'`)
-
Masuk ke registri menggunakan
$USER
+ token dari atas