Contextes Docker
Introduction
Ce guide montre comment vous pouvez utiliser les contextes pour gérer les daemons Docker depuis un seul client.
Chaque contexte contient toutes les informations requises pour gérer les ressources sur le daemon.
La commande docker context
facilite la configuration de ces contextes et le basculement entre eux.
Par exemple, un seul client Docker pourrait être configuré avec deux contextes :
- Un contexte par défaut fonctionnant localement
- Un contexte distant partagé
Une fois ces contextes configurés,
vous pouvez utiliser la commande docker context use <nom-contexte>
pour basculer entre eux.
Prérequis
Pour suivre les exemples de ce guide, vous aurez besoin :
- D'un client Docker qui prend en charge la commande
context
de niveau supérieur
Exécutez docker context
pour vérifier que votre client Docker prend en charge les contextes.
L'anatomie d'un contexte
Un contexte est une combinaison de plusieurs propriétés. Celles-ci incluent :
- Nom et description
- Configuration du point de terminaison
- Informations TLS
Pour lister les contextes disponibles, utilisez la commande docker context ls
.
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * unix:///var/run/docker.sock
Ceci montre un seul contexte appelé "default".
Il est configuré pour communiquer avec un daemon via le socket Unix local /var/run/docker.sock
.
L'astérisque dans la colonne NAME
indique que c'est le contexte actif.
Cela signifie que toutes les commandes docker
s'exécutent contre ce contexte,
à moins d'être remplacées par des variables d'environnement telles que DOCKER_HOST
et DOCKER_CONTEXT
,
ou en ligne de commande avec les flags --context
et --host
.
Creusez un peu plus profondément avec docker context inspect
.
L'exemple suivant montre comment inspecter le contexte appelé default
.
$ docker context inspect default
[
{
"Name": "default",
"Metadata": {},
"Endpoints": {
"docker": {
"Host": "unix:///var/run/docker.sock",
"SkipTLSVerify": false
}
},
"TLSMaterial": {},
"Storage": {
"MetadataPath": "\u003cIN MEMORY\u003e",
"TLSPath": "\u003cIN MEMORY\u003e"
}
}
]
Créer un nouveau contexte
Vous pouvez créer de nouveaux contextes avec la commande docker context create
.
L'exemple suivant crée un nouveau contexte appelé docker-test
et spécifie
le point de terminaison hôte du contexte vers le socket TCP tcp://docker:2375
.
$ docker context create docker-test --docker host=tcp://docker:2375
docker-test
Successfully created context "docker-test"
Le nouveau contexte est stocké dans un fichier meta.json
sous ~/.docker/contexts/
.
Chaque nouveau contexte que vous créez obtient son propre meta.json
stocké dans un sous-répertoire dédié de ~/.docker/contexts/
.
Vous pouvez visualiser le nouveau contexte avec docker context ls
et docker context inspect <nom-contexte>
.
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * unix:///var/run/docker.sock
docker-test tcp://docker:2375
Le contexte actuel est indiqué par un astérisque ("*").
Utiliser un contexte différent
Vous pouvez utiliser docker context use
pour basculer entre les contextes.
La commande suivante basculera le CLI docker
pour utiliser le contexte docker-test
.
$ docker context use docker-test
docker-test
Current context is now "docker-test"
Vérifiez l'opération en listant tous les contextes et en vous assurant que l'astérisque ("*") est contre le contexte docker-test
.
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default unix:///var/run/docker.sock
docker-test * tcp://docker:2375
Les commandes docker
cibleront maintenant les points de terminaison définis dans le contexte docker-test
.
Vous pouvez également définir le contexte actuel en utilisant la variable d'environnement DOCKER_CONTEXT
.
La variable d'environnement remplace le contexte défini avec docker context use
.
Utilisez la commande appropriée ci-dessous pour définir le contexte sur docker-test
en utilisant une variable d'environnement.
> $env:DOCKER_CONTEXT='docker-test'
$ export DOCKER_CONTEXT=docker-test
Exécutez docker context ls
pour vérifier que le contexte docker-test
est maintenant le
contexte actif.
Vous pouvez également utiliser le flag global --context
pour remplacer le contexte.
La commande suivante utilise un contexte appelé production
.
$ docker --context production container ls
Exporter et importer des contextes Docker
Vous pouvez utiliser les commandes docker context export
et docker context import
pour exporter et importer des contextes sur différents hôtes.
La commande docker context export
exporte un contexte existant vers un fichier.
Le fichier peut être importé sur n'importe quel hôte qui a le client docker
installé.
Exporter et importer un contexte
L'exemple suivant exporte un contexte existant appelé docker-test
.
Il sera écrit dans un fichier appelé docker-test.dockercontext
.
$ docker context export docker-test
Written file "docker-test.dockercontext"
Vérifiez le contenu du fichier d'exportation.
$ cat docker-test.dockercontext
Importez ce fichier sur un autre hôte en utilisant docker context import
pour créer un contexte avec la même configuration.
$ docker context import docker-test docker-test.dockercontext
docker-test
Successfully imported context "docker-test"
Vous pouvez vérifier que le contexte a été importé avec docker context ls
.
Le format de la commande d'importation est docker context import <nom-contexte> <fichier-contexte>
.
Mettre à jour un contexte
Vous pouvez utiliser docker context update
pour mettre à jour les champs dans un contexte existant.
L'exemple suivant met à jour le champ description dans le contexte existant docker-test
.
$ docker context update docker-test --description "Contexte de test"
docker-test
Successfully updated context "docker-test"