mirror of https://github.com/docker/cli.git
cf663b526a
- 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
|
||
---|---|---|
.. | ||
builder | ||
bundlefile | ||
checkpoint | ||
commands | ||
config | ||
container | ||
context | ||
engine | ||
formatter | ||
idresolver | ||
image | ||
inspect | ||
manifest | ||
network | ||
node | ||
plugin | ||
registry | ||
secret | ||
service | ||
stack | ||
swarm | ||
system | ||
task | ||
testdata | ||
trust | ||
volume | ||
cli.go | ||
cli_options.go | ||
cli_options_test.go | ||
cli_test.go | ||
context.go | ||
defaultcontextstore.go | ||
defaultcontextstore_test.go | ||
events_utils.go | ||
orchestrator.go | ||
orchestrator_test.go | ||
registry.go | ||
registry_test.go | ||
streams.go | ||
trust.go | ||
utils.go | ||
utils_test.go |