Skip to content

Feature Request: Override current context by environment variable #1899

@kinghuang

Description

@kinghuang

Description

Docker CLI 19.03 adds new context management features to quickly switch between Docker engines/clusters. While it is really handy, I'm finding it difficult to work with across terminal sessions.

I regularly have several Terminal windows open, connected to several separate Docker engines by setting environment variables like DOCKER_HOST, DOCKER_CONFIG, and DOCKER_TLS_VERIFY. When set in separate terminal sessions, they can independently talk to different engines.

With contexts, selecting a context with docker context use CONTEXT affects all terminal sessions. The -c, --context option can be used to override the context to use, but then that has to be specified with every command.

I would like an environment variable corresponding to the -c, --context option to set the context to use in a terminal session.

Steps to reproduce the issue:

Assume that there are two Docker contexts available named default and remote, and that the current context is default.

  1. Open two terminal sessions.
  2. In the first terminal session, run docker context use remote.
  3. In the second terminal session, attempt to interact with the local Docker engine.

Describe the results you received:

Invoking docker context use … sets the default context everywhere. There is not an easy way to use different contexts in different terminal sessions.

Describe the results you expected:

An environment variable such as DOCKER_CONTEXT that corresponds to the -c, --context CLI option to override the context to use.

Additional information you deem important (e.g. issue happens only occasionally):

Aliasing docker can be used as a way to set the context without affecting things system-wide.

alias docker="docker --context remote"

Output of docker version:

Client: Docker Engine - Community
 Version:           19.03.0-beta3
 API version:       1.40
 Go version:        go1.12.4
 Git commit:        c55e026
 Built:             Thu Apr 25 19:05:38 2019
 OS/Arch:           darwin/amd64
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          19.03.0-beta3
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.4
  Git commit:       c55e026
  Built:            Thu Apr 25 19:13:00 2019
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          v1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc7+dev
  GitCommit:        029124da7af7360afa781a0234d1b083550f797c
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Output of docker info:

Client:
 Debug Mode: false
 Plugins:
  app: Docker Application (Docker Inc., v0.8.0-beta1)
  buildx: Build with BuildKit (Docker Inc., v0.2.0-tp)

Server:
 Containers: 14
  Running: 11
  Paused: 0
  Stopped: 3
 Images: 124
 Server Version: 19.03.0-beta3
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: active
  NodeID: ilntgb4sbycucyl3iiva1wk3p
  Is Manager: true
  ClusterID: wsz99afbhy169obu69h1eq7z0
  Managers: 1
  Nodes: 1
  Default Address Pool: 10.0.0.0/8  
  SubnetSize: 24
  Data Path Port: 4789
  Orchestration:
   Task History Retention Limit: 5
  Raft:
   Snapshot Interval: 10000
   Number of Old Snapshots to Retain: 0
   Heartbeat Tick: 1
   Election Tick: 10
  Dispatcher:
   Heartbeat Period: 5 seconds
  CA Configuration:
   Expiry Duration: 3 months
   Force Rotate: 0
  Autolock Managers: false
  Root Rotation In Progress: false
  Node Address: 192.168.65.3
  Manager Addresses:
   192.168.65.3:2377
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc version: 029124da7af7360afa781a0234d1b083550f797c
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.9.125-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 6
 Total Memory: 11.71GiB
 Name: docker-desktop
 ID: b5307ed3-4dc8-4eb4-b931-138544ef581f
 Docker Root Dir: /var/lib/docker
 Debug Mode: true
  File Descriptors: 103
  Goroutines: 262
  System Time: 2019-05-21T21:26:28.9230849Z
  EventsListeners: 7
 HTTP Proxy: gateway.docker.internal:3128
 HTTPS Proxy: gateway.docker.internal:3129
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: true
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Product License: Community Engine

Additional environment details (AWS, VirtualBox, physical, etc.):

Context management is new in CLI 19.03.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions