Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[20.10 backport] docker-rootless-setuptools.sh fixes #44218

Merged
merged 2 commits into from Sep 29, 2022

Commits on Sep 29, 2022

  1. docker-rootless-setuptools.sh: use context after install

    Signed-off-by: Mathieu PATUREL <mathieu.paturel@gmail.com>
    (cherry picked from commit 7c17ad8)
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    math2001 authored and thaJeztah committed Sep 29, 2022
    Copy the full SHA
    53313be View commit details
    Browse the repository at this point in the history
  2. 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 e211473)
    Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
    thaJeztah committed Sep 29, 2022
    Copy the full SHA
    c003392 View commit details
    Browse the repository at this point in the history