The Docker CLI
Go to file
CrazyMax 62f2358b99
improve plugins discovery performance
We are currently loading plugin commands stubs for every
command invocation to add support for Cobra v2 completion.
This cause a significant performance hit if there is a
lot of plugins in the user space (7 atm in Docker Desktop):

`docker --version` takes in current 23.0.1 ~93ms

Instead of removing completion for plugins to fix the
regression, we can slightly improve plugins discovery by
spawning a goroutine for each iteration in the loop when
listing plugins:

`docker --version` now takes ~38ms

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-28 06:16:55 +02:00
.circleci dummy circleci config 2022-02-25 21:15:39 +01:00
.github build(deps): bump actions/setup-go from 3 to 4 2023-03-16 09:07:41 +00:00
cli cli/trust: remove special handling for "plugin" Class 2023-03-23 13:44:48 +01:00
cli-plugins improve plugins discovery performance 2023-03-28 06:16:55 +02:00
cmd/docker cli: pass dockerCLI's in/out/err to cobra cmds 2023-01-15 13:44:33 +01:00
contrib/completion Add bash completion for available plugins 2023-03-17 15:04:09 +01:00
dockerfiles Merge pull request #4085 from thaJeztah/bump_go1.19.7 2023-03-10 13:03:50 +01:00
docs docs: Deprecate buildkit's build information 2023-03-03 11:12:15 +01:00
e2e cmd: set double quotes as code delimiter 2023-01-06 19:15:33 +01:00
experimental experimental: fix broken link to "checkpoint and restore" page 2021-09-07 13:30:48 +02:00
internal/test internal/test: use strings.Cut 2022-12-29 15:19:31 +01:00
man docs/reference: info: update example output 2022-12-05 17:10:05 +01:00
opts Fix bad ThrottleDevice path 2023-02-03 11:39:51 +01:00
scripts docs: move doc generation scripts to subdir 2023-01-31 06:33:23 +01:00
service/logs service/logs: use strings.Cut 2022-12-29 15:19:31 +01:00
templates staticcheck: ignore SA1019: strings.Title is deprecated 2022-03-28 17:23:06 +02:00
vendor improve plugins discovery performance 2023-03-28 06:16:55 +02:00
.dockerignore validate manpages target 2022-02-25 17:11:17 +01:00
.gitattributes fix linguist with .gitattributes 2021-12-16 21:16:02 +01:00
.gitignore validate manpages target 2022-02-25 17:11:17 +01:00
.golangci.yml Use gofumpt if available, and enable gofumpt linter 2022-09-30 19:14:36 +02:00
.mailmap Update mailmap and AUTHORS 2022-12-01 10:04:48 +01:00
AUTHORS Update AUTHORS header to indicate it's generated 2022-12-01 10:05:22 +01:00
CONTRIBUTING.md Use gofumpt if available, and enable gofumpt linter 2022-09-30 19:14:36 +02:00
Dockerfile Merge pull request #4085 from thaJeztah/bump_go1.19.7 2023-03-10 13:03:50 +01:00
LICENSE Add project files 2017-04-17 17:49:33 -04:00
MAINTAINERS MAINTAINERS: add myself as curator 2023-02-07 10:13:53 -07:00
Makefile docs: generate markdown 2023-01-06 22:36:47 +01:00
NOTICE switch kr/pty to creack/pty v1.1.7 2019-07-29 16:45:41 -07:00
README.md README: fix badges 2023-01-13 19:18:26 +01:00
TESTING.md tweak description of login/logout 2022-04-04 10:44:11 +02:00
VERSION Update version to v23.0.0-dev 2022-11-24 19:43:32 +01:00
codecov.yml Drop support for (archived) Compose-on-Kubernetes 2022-02-22 13:47:34 +01:00
docker-bake.hcl update to go1.19.7 2023-03-10 10:22:54 +01:00
docker.Makefile docs: generate markdown 2023-01-06 22:36:47 +01:00
vendor.mod improve plugins discovery performance 2023-03-28 06:16:55 +02:00
vendor.sum improve plugins discovery performance 2023-03-28 06:16:55 +02:00

README.md

Docker CLI

PkgGoDev Build Status Test Status Go Report Card Codecov

About

This repository is the home of the cli used in the Docker CE and Docker EE products.

Development

docker/cli is developed using Docker.

Build CLI from source:

docker buildx bake

Build binaries for all supported platforms:

docker buildx bake cross

Build for a specific platform:

docker buildx bake --set binary.platform=linux/arm64 

Build dynamic binary for glibc or musl:

USE_GLIBC=1 docker buildx bake dynbinary 

Run all linting:

docker buildx bake lint shellcheck

Run test:

docker buildx bake test

List all the available targets:

make help

In-container development environment

Start an interactive development environment:

make -f docker.Makefile shell

Brought to you courtesy of our legal counsel. For more context, please see the NOTICE document in this repo.

Use and transfer of Docker may be subject to certain restrictions by the United States and other governments.

It is your responsibility to ensure that your use and/or transfer does not violate applicable laws.

For more information, please see https://www.bis.doc.gov

Licensing

docker/cli is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.