MCPcopy Index your code
hub / github.com/docker/docker-credential-helpers

github.com/docker/docker-credential-helpers @v0.9.8

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.9.8 ↗ · + Follow
140 symbols 507 edges 24 files 81 documented · 58% 163 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

GitHub release PkgGoDev Build Status Codecov Go Report Card

Introduction

docker-credential-helpers is a suite of programs to use native stores to keep Docker credentials safe.

Installation

Go to the Releases page and download the binary that works better for you. Put that binary in your $PATH, so Docker can find it.

Building

You can build the credential helpers using Docker:

# install emulators
$ docker run --privileged --rm tonistiigi/binfmt --install all

# create builder
$ docker buildx create --use

# build credential helpers from remote repository and output to ./bin/build
$ docker buildx bake "https://github.com/docker/docker-credential-helpers.git"

# or from local source
$ git clone https://github.com/docker/docker-credential-helpers.git
$ cd docker-credential-helpers
$ docker buildx bake

Or if the toolchain is already installed on your machine:

  1. Download the source.
$ git clone https://github.com/docker/docker-credential-helpers.git
$ cd docker-credential-helpers
  1. Use make to build the program you want. That will leave an executable in the bin directory inside the repository.
$ make osxkeychain
  1. Put that binary in your $PATH, so Docker can find it.
$ cp bin/build/docker-credential-osxkeychain /usr/local/bin/

Usage

With the Docker Engine

Set the credsStore option in your ~/.docker/config.json file with the suffix of the program you want to use. For instance, set it to osxkeychain if you want to use docker-credential-osxkeychain.

{
  "credsStore": "osxkeychain"
}

With other command line applications

The sub-package client includes functions to call external programs from your own command line applications.

There are three things you need to know if you need to interact with a helper:

  1. The name of the program to execute, for instance docker-credential-osxkeychain.
  2. The server address to identify the credentials, for instance https://example.com.
  3. The username and secret to store, when you want to store credentials.

You can see examples of each function in the client documentation.

Available programs

  1. osxkeychain: Provides a helper to use the OS X keychain as credentials store.
  2. secretservice: Provides a helper to use the D-Bus secret service as credentials store.
  3. wincred: Provides a helper to use Windows credentials manager as store.
  4. pass: Provides a helper to use pass as credentials store.

Note

pass needs to be configured for docker-credential-pass to work properly. It must be initialized with a gpg2 key ID. Make sure your GPG key exists is in gpg2 keyring as pass uses gpg2 instead of the regular gpg.

Development

A credential helper can be any program that can read values from the standard input. We use the first argument in the command line to differentiate the kind of command to execute. There are four valid values:

  • store: Adds credentials to the keychain. The payload in the standard input is a JSON document with ServerURL, Username and Secret.
  • get: Retrieves credentials from the keychain. The payload in the standard input is the raw value for the ServerURL.
  • erase: Removes credentials from the keychain. The payload in the standard input is the raw value for the ServerURL.
  • list: Lists stored credentials. There is no standard input payload.

This repository also includes libraries to implement new credentials programs in Go. Adding a new helper program is pretty easy. You can see how the OS X keychain helper works in the osxkeychain directory.

  1. Implement the interface credentials.Helper in YOUR_PACKAGE/
  2. Create a main program in YOUR_PACKAGE/cmd/.
  3. Add make tasks to build your program and run tests.

License

MIT. See LICENSE for more information.

Extension points exported contracts — how you extend this code

Helper (Interface)
Helper is the interface a credentials store helper must implement. [5 implementers]
credentials/helper.go
Program (Interface)
Program is an interface to execute external programs. [2 implementers]
client/command.go
ProgramFunc (FuncType)
ProgramFunc is a type of function that initializes programs based on arguments.
client/command.go

Core symbols most depended-on inside this repo

Error
called by 40
credentials/error.go
IsErrCredentialsNotFound
called by 21
credentials/error.go
Delete
called by 14
osxkeychain/osxkeychain.go
Delete
called by 12
wincred/wincred.go
NewErrCredentialsNotFound
called by 11
credentials/error.go
Store
called by 8
credentials/credentials.go
Get
called by 7
pass/pass.go
NewErrCredentialsMissingServerURL
called by 6
credentials/error.go

Shape

Function 85
Method 41
Struct 11
Interface 2
FuncType 1

Languages

Go95%
C5%

Modules by API surface

credentials/error.go18 symbols
credentials/credentials_test.go14 symbols
pass/pass.go13 symbols
credentials/credentials.go11 symbols
client/client_test.go11 symbols
client/command.go10 symbols
wincred/wincred.go9 symbols
secretservice/secretservice.c7 symbols
osxkeychain/osxkeychain_test.go6 symbols
osxkeychain/osxkeychain.go6 symbols
wincred/wincred_test.go5 symbols
secretservice/secretservice.go5 symbols

For agents

$ claude mcp add docker-credential-helpers \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact