moby/contrib
Sebastiaan van Stijn c003392582
contrib: make dockerd-rootless-setuptool.sh more robust
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>
(cherry picked from commit e2114731e7)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-09-29 10:05:56 +02:00
..
apparmor AppArmor: add missing rules for running in userns 2019-09-30 16:17:13 +02:00
busybox Pin busybox to fixed version and verify sha256 2020-04-03 09:55:26 +02:00
docker-device-tool Update to Go 1.17.0, and gofmt with Go 1.17 2022-04-07 23:27:50 +02:00
gitdm run shfmt 2020-03-03 12:27:49 +09:00
httpserver Remove solaris files 2017-10-24 15:39:34 -04:00
init Revert "Add multi-user.target to After=" 2020-12-10 15:04:00 +01:00
nnp-test Dockerfile: Update Dockerfile syntax, switch to bullseye, add missing libseccomp-dev, remove build pack 2022-09-20 16:18:21 +05:30
syntax Remove vim syntax files 2020-01-14 13:01:18 -04:00
syscall-test Dockerfile: Update Dockerfile syntax, switch to bullseye, add missing libseccomp-dev, remove build pack 2022-09-20 16:18:21 +05:30
udev Add udev rules files for hiding the docker loopback devices from udisks 2013-12-02 09:11:06 -07:00
check-config.sh check-config.sh: add NETFILTER_XT_MARK 2021-02-23 19:25:47 +01:00
dockerd-rootless-setuptool.sh contrib: make dockerd-rootless-setuptool.sh more robust 2022-09-29 10:05:56 +02:00
dockerd-rootless.sh dockerd-rootless.sh: Fix variable not double quotes cause unexpected behavior 2021-10-21 19:51:55 +02:00
dockerize-disk.sh run shfmt 2020-03-03 12:27:49 +09:00
download-frozen-image-v2.sh Allow download-frozen-images to work without go 2020-09-28 19:10:16 +00:00
editorconfig added editorconfig 2016-10-20 22:18:16 -02:00
mac-install-bundle.sh run shfmt 2020-03-03 12:27:49 +09:00
mkimage-alpine.sh run shfmt 2020-03-03 12:27:49 +09:00
mkimage-arch-pacman.conf mkimage-arch: provide and use own pacman.conf 2014-01-21 14:22:56 +01:00
mkimage-arch.sh run shfmt 2020-03-03 12:27:49 +09:00
mkimage-archarm-pacman.conf Fixed arm arch image maker to support arm versions other than 7 2016-07-10 18:46:35 -07:00
mkimage-crux.sh run shfmt 2020-03-03 12:27:49 +09:00
mkimage-pld.sh add script to make base image for PLD Linux 2016-05-31 09:20:51 +03:00
mkimage-yum.sh run shfmt 2020-03-03 12:27:49 +09:00
nuke-graph-directory.sh run shfmt 2020-03-03 12:27:49 +09:00
README.md Add .md extension to readme for markdown rendering 2016-02-24 20:39:46 +00:00
report-issue.sh run shfmt 2020-03-03 12:27:49 +09:00

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.