Documentation
¶
Index ¶
- Variables
- func GetToken(ctx context.Context) string
- func GetUUID(ctx context.Context) string
- func GetVersion(ctx context.Context) string
- func InvalidateToken(token string)
- func IsDockerDesktopRunning(ctx context.Context) bool
- func IsWSL() bool
- type DockerDesktopPaths
- type DockerHubInfo
- type RawClient
- type Source
Constants ¶
This section is empty.
Variables ¶
var ClientBackend = newRawClient(dialBackend)
var Paths = sync.OnceValue(func() DockerDesktopPaths { desktopPaths, err := getDockerDesktopPaths() if err != nil { panic(err) } return desktopPaths })
Functions ¶
func GetVersion ¶ added in v1.60.0
GetVersion returns the running Docker Desktop version (e.g. "4.74.0") or an empty string if Docker Desktop is not running or the call fails.
The lookup is bounded by a short internal timeout so a stale or missing backend socket cannot stall callers on hot paths (it is queried on every outbound built-in tool HTTP request). ctx is used for the underlying HTTP call on a cache miss; on a cache hit the cached value is returned without consulting ctx.
func InvalidateToken ¶ added in v1.125.0
func InvalidateToken(token string)
InvalidateToken forgets token, everywhere it may be cached, so the next GetToken fetches or mints a new one. Called when Docker rejects a token we believed to be valid: only the issuer knows for sure.
func IsDockerDesktopRunning ¶
Types ¶
type DockerDesktopPaths ¶
type DockerHubInfo ¶
func GetUserInfo ¶
func GetUserInfo(ctx context.Context) DockerHubInfo
GetUserInfo returns the signed-in account. Docker Desktop knows it best, but it is not always around: the token itself carries the same information.
type Source ¶ added in v1.125.0
type Source string
Source says where a token came from, for diagnostics.
func GetTokenWithSource ¶ added in v1.125.0
GetTokenWithSource returns the user's Docker access token and where it came from. Docker Desktop's newer auth stack (auth v2) serves whatever its in-memory token source holds and never refreshes on GET, so a stuck background refresher makes it return the same expired JWT forever — or nothing at all when its read-time refresh failed. When that happens we mint a token ourselves from the access token `docker login` stored, and only then fall back to nudging Desktop.