compose/docs/cli/context.md

3.5 KiB

docker context

A context is a way of easily referring to a particular place that you want to run containers. You can set up a context and refer to it by name, and easily switch between different contexts, so you can use containers in different places.

The most important commands for working with a context are

  • docker context create will create a new context from options specified on the command line
  • docker context rm removes a context
  • docker context use will set the context to use by default; you can also use docker --context ... or via the environment with DOCKER_CONTEXT=... docker ...
  • docker context show shows the context name that you are currently using.
  • docker context ls lists the available contexts
  • docker context login some types of context require credentials that may expire, such as OAuth credentials. If the credentials have expired you will need to use docker context login to refresh them.

In addition you can use

  • docker context inspect to see the full details of a context
  • docker context import to import a context NOTE may make changes here, why can't create create from a file etc?
  • docker context export to output a context NOTE may make changes here

docker context create

To create a new context from options specified on the command line use docker context create. The exact information you need to create a context depends on the particular backend.

NOTE for compatibility we may need to support existing syntax as well, but this should be deprecated. This may be a case where there are few users so can just change it.

Usage:

docker context create _name_ _type_ [options]
docker context create _name_ url

NOTE we could also use docker context create _type_ _name_ might be more consistent, makes the url form less clear.

docker context create "myserver" docker --description "some description" --host=tcp://myserver:2376

In addition there is a URL form for contexts which is a little harder to read but lets you share contexts more easily.

docker context create "myserver" docker://myserver:2376?type=org.moby.moby

NOTE: really don't think the URL form will work for the current mutual TLS auth, without extremely long URLs. Not important.

docker context use

Once you have created a context with docker context create, then you have given it a name. You can switch to the context with docker context use _name_. This will be used for all Docker commands from then on, unless you specify the context explicitly with docker --context _name_ ... or use the DOCKER_CONTEXT environment variable.

docker context show

To see what the current context is, use docker context show.

NOTE: this is new, its kind of weird there is no way to easily display name of current context without parsing output of docker context inspect, eg for use in shell prompt. We could also use plain docker context but this is not a pattern we use much elsewhere so TBD.

docker context ls

This lists all the currently configured contexts. Use docker context ls -q or docker context ls --quiet to just list the names not the descriptions.

docker context login

Some contexts have a login that will expire, for example if they use OAuth authentication. In this case, trying to use a context will give an error that you are not authenticated. Use docker context login to log in to the current context, and then follow the prompts.

TODO context sharing

docker context pull? to get shared context? `docker context send justincormack'? to send to justin via Hub.