The Docker CLI
Go to file
Sebastiaan van Stijn cf663b526a
cli: perform feature detection lazily
- Perform feature detection when actually needed, instead of during
  initializing
- Version negotiation is performed either when making an API request,
  or when (e.g.) running `docker help` (to hide unsupported features)
- Use a 2 second timeout when 'pinging' the daemon; this should be
  sufficient for most cases, and when feature detection failed, the
  daemon will still perform validation (and produce an error if needed)
- context.WithTimeout doesn't currently work with ssh connections (connhelper),
  so we're only applying this timeout for tcp:// connections, otherwise
  keep the old behavior.

Before this change:

    time sh -c 'DOCKER_HOST=tcp://42.42.42.41:4242 docker help &> /dev/null'
    real   0m32.919s
    user   0m0.370s
    sys    0m0.227s

    time sh -c 'DOCKER_HOST=tcp://42.42.42.41:4242 docker context ls &> /dev/null'
    real   0m32.072s
    user   0m0.029s
    sys    0m0.023s

After this change:

    time sh -c 'DOCKER_HOST=tcp://42.42.42.41:4242 docker help &> /dev/null'
    real   0m 2.28s
    user   0m 0.03s
    sys    0m 0.03s

    time sh -c 'DOCKER_HOST=tcp://42.42.42.41:4242 docker context ls &> /dev/null'
    real   0m 0.13s
    user   0m 0.02s
    sys    0m 0.02s

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit b39739123b)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-04-29 17:12:23 +02:00
.github Remove myself from codeowners 😅 2019-01-10 17:32:07 +01:00
cli cli: perform feature detection lazily 2020-04-29 17:12:23 +02:00
cli-plugins bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-04-21 16:43:18 +02:00
cmd/docker cli: perform feature detection lazily 2020-04-29 17:12:23 +02:00
contrib/completion Update flag description for docker rm -v 2020-01-27 15:53:37 +01:00
dockerfiles update vndr v0.1.1 2020-04-20 22:51:22 +02:00
docs service update: fix service create example 2020-04-28 11:47:37 +02:00
e2e bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-04-21 16:43:18 +02:00
experimental experimental/vlan-networks: markdown touch-ups 2020-04-19 19:43:09 +02:00
internal bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-04-21 16:43:18 +02:00
kubernetes bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-04-21 16:43:18 +02:00
man Fix phrasing when referring to the freezer cgroup 2019-10-29 15:26:20 +01:00
opts bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-04-21 16:43:18 +02:00
scripts Support GOARM and windows .exe in binary target 2019-06-05 14:13:14 -07:00
service/logs bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-04-21 16:43:18 +02:00
templates bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-04-21 16:43:18 +02:00
types Remove unused helath check func 2018-10-02 20:52:34 +02:00
vendor bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-04-21 16:43:18 +02:00
.dockerignore Update dockerignore 2019-08-15 03:18:34 +02:00
.gitignore Update gitignore 2017-09-27 16:45:35 +02:00
.golangci.yml Remove now obsolete gometalinter and use golangci-lint instead 2020-01-06 13:23:38 +01:00
.mailmap Update AUTHORS and mailmap 2019-05-13 08:58:21 -07:00
AUTHORS Update AUTHORS and mailmap 2019-05-13 08:58:21 -07:00
CONTRIBUTING.md Add Contribution guidelines 2017-07-28 11:33:19 -07:00
Jenkinsfile e2e: enable buildkit 2019-08-15 03:18:42 +02:00
LICENSE Add project files 2017-04-17 17:49:33 -04:00
MAINTAINERS Remove outdated completion reviewers file 2018-08-01 15:08:36 +02:00
Makefile Allow control over dirs passed to e2e and unit tests 2019-03-11 16:02:55 +00:00
NOTICE Add project files 2017-04-17 17:49:33 -04:00
README.md update Jenkins Build Status urls for README 2019-10-29 15:27:54 +01:00
TESTING.md Update TESTING.md to replace testify by gotest.tools 2018-07-02 09:24:28 +02:00
VERSION Bump version to 19.03.0-dev 2018-09-11 13:06:49 +02:00
appveyor.yml Bump Golang 1.13.10 2020-04-10 22:37:09 +02:00
circle.yml CircleCI: add some info steps, and re-group jobs 2020-01-17 13:45:00 +01:00
codecov.yml Fix PR comments 2018-01-03 10:23:32 +01:00
docker.Makefile Dockerfile: use GO_VERSION build-arg for overriding Go version 2019-08-14 03:03:04 +02:00
poule.yml Add github templates and initial poule configuration 2017-05-09 16:57:46 +02:00
vendor.conf bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-04-21 16:43:18 +02:00

README.md

build status Build Status

docker/cli

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 a linux binary:

$ make -f docker.Makefile binary

Build binaries for all supported platforms:

$ make -f docker.Makefile cross

Run all linting:

$ make -f docker.Makefile lint

List all the available targets:

$ make help

In-container development environment

Start an interactive development environment:

$ make -f docker.Makefile shell

In the development environment you can run many tasks, including build binaries:

$ make binary

Legal

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.