e2114731e7
The `docker` CLI currently doesn't handle situations where the current context (as defined in `~/.docker/config.json`) is invalid or doesn't exist. As loading (and checking) the context happens during initialization of the CLI, this prevents `docker context` commands from being used, which makes it complicated to fix the situation. For example, running `docker context use <correct context>` would fail, which makes it not possible to update the `~/.docker/config.json`, unless doing so manually. For example, given the following `~/.docker/config.json`: ```json { "currentContext": "nosuchcontext" } ``` All of the commands below fail: ```bash docker context inspect rootless Current context "nosuchcontext" is not found on the file system, please check your config file at /Users/thajeztah/.docker/config.json docker context rm --force rootless Current context "nosuchcontext" is not found on the file system, please check your config file at /Users/thajeztah/.docker/config.json docker context use default Current context "nosuchcontext" is not found on the file system, please check your config file at /Users/thajeztah/.docker/config.json ``` While these things should be fixed, this patch updates the script to switch the context using the `--context` flag; this flag is taken into account when initializing the CLI, so that having an invalid context configured won't block `docker context` commands from being executed. Given that all `context` commands are local operations, "any" context can be used (it doesn't need to make a connection with the daemon). With this patch, those commands can now be run (and won't fail for the wrong reason); ```bash docker --context=default context inspect -f "{{.Name}}" rootless rootless docker --context=default context inspect -f "{{.Name}}" rootless-doesnt-exist context "rootless-doesnt-exist" does not exist ``` One other issue may also cause things to fail during uninstall; trying to remove a context that doesn't exist will fail (even with the `-f` / `--force` option set); ```bash docker --context=default context rm blablabla Error: context "blablabla": not found ``` While this is "ok" in most circumstances, it also means that (potentially) the current context is not reset to "default", so this patch adds an explicit `docker context use`, as well as unsetting the `DOCKER_HOST` and `DOCKER_CONTEXT` environment variables. Signed-off-by: Sebastiaan van Stijn <github@gone.nl> |
||
---|---|---|
.. | ||
apparmor | ||
busybox | ||
docker-device-tool | ||
gitdm | ||
httpserver | ||
init | ||
nnp-test | ||
syntax | ||
syscall-test | ||
udev | ||
check-config.sh | ||
dockerd-rootless-setuptool.sh | ||
dockerd-rootless.sh | ||
dockerize-disk.sh | ||
download-frozen-image-v2.sh | ||
editorconfig | ||
mac-install-bundle.sh | ||
mkimage-alpine.sh | ||
mkimage-arch-pacman.conf | ||
mkimage-arch.sh | ||
mkimage-archarm-pacman.conf | ||
mkimage-crux.sh | ||
mkimage-pld.sh | ||
mkimage-yum.sh | ||
nuke-graph-directory.sh | ||
README.md |
The contrib
directory contains scripts, images, and other helpful things
which are not part of the core docker distribution. Please note that they
could be out of date, since they do not receive the same attention as the
rest of the repository.