Charger un fichier
  1. base64hub
  2. Outils web et jetons
  3. Décodeur .dockerconfigjson

Décodeur .dockerconfigjson pour les pull secrets d'images

Collez un Secret kubernetes.io/dockerconfigjson, sa valeur Base64 ou un ~/.docker/config.json pour voir avec quel registre et quel compte il se connecte.

Gratuit sans inscription, sans limites Local rien n'est envoyé Deux couches le Base64 du Secret et le champ auth, tous deux décodés Mis à jour 27 oct. 2026

Traité dans votre navigateur. Cette page ne peut envoyer vos données nulle part – comment le savons-nous

Comment décoder un pull secret

  1. Collez l’un de ces éléments dans l’entrée :
    • la sortie de kubectl get secret regcred -o yaml
    • seulement la valeur Base64 de .dockerconfigjson
    • le JSON lui-même, par exemple votre ~/.docker/config.json
  2. Les identifiants de registre sont listés en premier : registre, nom d’utilisateur, mot de passe, et la valeur auth séparée en utilisateur et mot de passe.
  3. Pour créer un Secret à la place, ouvrez Créer le pull secret et remplissez Registre, Nom d’utilisateur, Mot de passe et éventuellement E-mail. Le résultat est le même Secret que celui qu’écrit kubectl create secret docker-registry.

Le double Base64 d’un pull secret

Un pull secret emballe du Base64 dans du Base64 : c’est pourquoi le décoder à la main demande deux étapes.

apiVersion: v1
kind: Secret
metadata:
  name: regcred
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: eyJhdXRocyI6eyJyZWdpc3RyeS5leGFtcGxlLmNvbSI6eyJ1c2VybmFtZSI6ImNpLWJvdCIsInBhc3N3b3JkIjoicHVsbC1vbmx5LXRva2VuIiwiYXV0aCI6Ilkya3RZbTkwT25CMWJHd3RiMjVzZVMxMGIydGxiZz09In19fQ==

La première couche, la valeur du Secret, se décode en JSON de configuration Docker :

{"auths":{"registry.example.com":{"username":"ci-bot","password":"pull-only-token","auth":"Y2ktYm90OnB1bGwtb25seS10b2tlbg=="}}}

La seconde couche, auth, se décode en ci-bot:pull-only-token. Une valeur .dockerconfigjson créée par kubectl create secret docker-registry commence par eyJhdXRocyI6, le Base64 de {"auths":, ce qui rend ces chaînes faciles à repérer dans les journaux et les manifestes.

Les formats que vous pouvez rencontrer

FormeProvenance
{"auths": {"host": {...}}}.dockerconfigjson, ~/.docker/config.json actuel
{"host": {"auth": "...", "email": "..."}}anciens Secrets .dockercfg (kubernetes.io/dockercfg)
"https://index.docker.io/v1/" comme hôteDocker Hub
identitytoken au lieu d’un mot de passeregistres qui délivrent des jetons de rafraîchissement OAuth après docker login

Les deux types de Secret sont décodés ici. Un ancien .dockercfg n’a pas d’enveloppe auths : un script écrit pour un format ne trouve donc rien, sans erreur, dans l’autre.

Décoder dans le shell

kubectl get secret regcred -o jsonpath='{.data.\.dockerconfigjson}' | base64 --decode | jq .
kubectl get secret regcred -o jsonpath='{.data.\.dockerconfigjson}' | base64 --decode \
  | jq -r '.auths | to_entries[] | "\(.key) \(.value.auth | @base64d)"'

La seconde commande affiche une ligne registry user:password par registre. La valeur auth a le même format qu’un en-tête Basic Auth : le décodeur Basic Auth la lit donc aussi.

Pourquoi un pull secret échoue

  • Mauvaise clé de registre. L’hôte dans auths doit correspondre à la référence de l’image : ghcr.io/org/app a besoin de ghcr.io, et les images Docker Hub de https://index.docker.io/v1/.
  • Secret dans un autre namespace. imagePullSecrets ne trouve que les Secrets du namespace du Pod.
  • Jeton expiré. Certains registres délivrent des mots de passe de courte durée ; les jetons Amazon ECR, par exemple, sont valables 12 heures. Un Secret qui fonctionnait hier donne alors ImagePullBackOff aujourd’hui.
  • JSON construit à la main. Un mot de passe copié avec un saut de ligne ou une espace en trop, ou une valeur auth encodée à partir de la mauvaise chaîne, échoue sans bruit. Comparez le auth décodé avec les champs nom d’utilisateur et mot de passe, ou recréez le Secret avec kubectl create secret docker-registry.

Quiconque peut lire le Secret peut utiliser le compte, puisque le Base64 ne cache rien. Donnez aux pull secrets des jetons de registre en lecture seule.

FAQ

Comment décoder un imagePullSecret ?

Collez ci-dessus la sortie de kubectl get secret regcred -o yaml. Dans un shell, kubectl get secret regcred -o jsonpath='{.data.\.dockerconfigjson}' | base64 --decode affiche le JSON, dont le champ auth est encore une fois en Base64.

Qu'est-ce que le champ auth de config.json ?

C’est username:password en Base64, le même format qu’un en-tête HTTP Authorization Basic. Y2ktYm90OnB1bGwtb25seS10b2tlbg== se décode en ci-bot:pull-only-token.

Pourquoi l'entrée auths de mon ~/.docker/config.json est-elle vide ?

Docker stocke le mot de passe dans un credential helper quand credsStore ou credHelpers est défini, par exemple le trousseau du système. Le fichier ne contient alors que {} par registre, et il n’y a rien à décoder.