Docker contexts (original) (raw)
This guide shows how you can use contexts to manage Docker daemons from a single client.
Each context contains all information required to manage resources on the daemon. The docker context
command makes it easy to configure these contexts and switch between them.
As an example, a single Docker client might be configured with two contexts:
- A default context running locally
- A remote, shared context
Once these contexts are configured, you can use the docker context use <context-name>
command to switch between them.
To follow the examples in this guide, you'll need:
- A Docker client that supports the top-level
context
command
Run docker context
to verify that your Docker client supports contexts.
The anatomy of a context
A context is a combination of several properties. These include:
- Name and description
- Endpoint configuration
- TLS info
To list available contexts, use the docker context ls
command.
This shows a single context called "default". It's configured to talk to a daemon through the local /var/run/docker.sock
Unix socket.
The asterisk in the NAME
column indicates that this is the active context. This means all docker
commands run against this context, unless overridden with environment variables such as DOCKER_HOST
and DOCKER_CONTEXT
, or on the command-line with the --context
and --host
flags.
Dig a bit deeper with docker context inspect
. The following example shows how to inspect the context called default
.
Create a new context
You can create new contexts with the docker context create
command.
The following example creates a new context called docker-test
and specifies the host endpoint of the context to TCP socket tcp://docker:2375
.
The new context is stored in a meta.json
file below ~/.docker/contexts/
. Each new context you create gets its own meta.json
stored in a dedicated sub-directory of ~/.docker/contexts/
.
You can view the new context with docker context ls
and docker context inspect <context-name>
.
The current context is indicated with an asterisk ("*").
Use a different context
You can use docker context use
to switch between contexts.
The following command will switch the docker
CLI to use the docker-test
context.
Verify the operation by listing all contexts and ensuring the asterisk ("*") is against the docker-test
context.
docker
commands will now target endpoints defined in the docker-test
context.
You can also set the current context using the DOCKER_CONTEXT
environment variable. The environment variable overrides the context set with docker context use
.
Use the appropriate command below to set the context to docker-test
using an environment variable.
Run docker context ls
to verify that the docker-test
context is now the active context.
You can also use the global --context
flag to override the context. The following command uses a context called production
.
Exporting and importing Docker contexts
You can use the docker context export
and docker context import
commands to export and import contexts on different hosts.
The docker context export
command exports an existing context to a file. The file can be imported on any host that has the docker
client installed.
Exporting and importing a context
The following example exports an existing context called docker-test
. It will be written to a file called docker-test.dockercontext
.
Check the contents of the export file.
Import this file on another host using docker context import
to create context with the same configuration.
You can verify that the context was imported with docker context ls
.
The format of the import command is docker context import <context-name> <context-file>
.
Updating a context
You can use docker context update
to update fields in an existing context.
The following example updates the description field in the existing docker-test
context.