Enviar um arquivo
  1. base64hub
  2. Web e tokens
  3. Decodificador de .dockerconfigjson

Decodificador de .dockerconfigjson para image pull secrets

Cole um Secret kubernetes.io/dockerconfigjson, o valor Base64 dele ou um ~/.docker/config.json para ver com qual registry e qual conta ele faz login.

Grátis sem cadastro, sem limites Local nada é enviado Duas camadas o Base64 do Secret e o campo auth, ambos decodificados Atualizado 27 de out. de 2026

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como decodificar um pull secret

  1. Cole na entrada uma destas opções:
    • a saída de kubectl get secret regcred -o yaml
    • só o valor Base64 de .dockerconfigjson
    • o próprio JSON, por exemplo o seu ~/.docker/config.json
  2. As credenciais de registry aparecem primeiro: registry, usuário, senha e o valor auth separado em usuário e senha.
  3. Para criar um Secret, abra Gerar pull secret e preencha Registry, Usuário, Senha e, se quiser, E-mail. O resultado é o mesmo Secret que kubectl create secret docker-registry grava.

O Base64 duplo dentro de um pull secret

Um pull secret embrulha Base64 dentro de Base64, e é por isso que decodificá-lo à mão leva dois passos.

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

A primeira camada, o valor do Secret, decodifica para o JSON de configuração do Docker:

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

A segunda camada, auth, decodifica para ci-bot:pull-only-token. Um valor .dockerconfigjson criado por kubectl create secret docker-registry começa com eyJhdXRocyI6, o Base64 de {"auths":, o que facilita identificar essas strings em logs e manifestos.

Formatos que você pode encontrar

FormaDe onde vem
{"auths": {"host": {...}}}.dockerconfigjson, ~/.docker/config.json atual
{"host": {"auth": "...", "email": "..."}}Secrets .dockercfg legados (kubernetes.io/dockercfg)
"https://index.docker.io/v1/" como hostDocker Hub
identitytoken no lugar de senharegistries que entregam refresh tokens OAuth depois do docker login

Os dois tipos de Secret são decodificados aqui. Um .dockercfg legado não tem o invólucro auths, então um script escrito para um formato não encontra nada no outro, sem avisar.

Como decodificar no 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)"'

O segundo comando imprime uma linha registry user:password por registry. O valor auth tem o mesmo formato de um header Basic Auth, então o decodificador de Basic Auth também o lê.

Por que um pull secret falha

  • Chave de registry errada. O host em auths precisa corresponder à referência da imagem: ghcr.io/org/app precisa de ghcr.io, e imagens do Docker Hub precisam de https://index.docker.io/v1/.
  • Secret em outro namespace. imagePullSecrets só encontra Secrets no namespace do próprio Pod.
  • Token expirado. Alguns registries emitem senhas de curta duração; tokens do Amazon ECR, por exemplo, valem por 12 horas. Um Secret que funcionou ontem dá ImagePullBackOff hoje.
  • JSON montado à mão. Uma senha copiada com quebra de linha ou espaço no final, ou um valor auth codificado a partir da string errada, falha em silêncio. Compare o auth decodificado com os campos de usuário e senha, ou recrie o Secret com kubectl create secret docker-registry.

Qualquer um que consiga ler o Secret pode usar a conta, já que o Base64 não esconde nada. Use tokens de registry somente leitura nos pull secrets.

Perguntas frequentes

Como decodificar um imagePullSecret?

Cole acima a saída de kubectl get secret regcred -o yaml. No shell, kubectl get secret regcred -o jsonpath='{.data.\.dockerconfigjson}' | base64 --decode imprime o JSON, e o campo auth dele está em Base64 mais uma vez.

O que é o campo auth no config.json?

É username:password em Base64, o mesmo formato de um header HTTP Basic Authorization. Y2ktYm90OnB1bGwtb25seS10b2tlbg== decodifica para ci-bot:pull-only-token.

Por que a entrada auths do meu ~/.docker/config.json está vazia?

O Docker guarda a senha em um credential helper quando credsStore ou credHelpers está definido, por exemplo no chaveiro do sistema. O arquivo então tem só {} por registry, e não há nada para decodificar.