GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment les contextes Docker vous permettent de travailler avec plusieurs hôtes

Les contextes de l'interface de ligne de commande Docker fournissent un mécanisme simplifié pour interagir avec plusieurs points de terminaison Docker. Vous pouvez configurer des contextes pour chacun de vos hôtes et basculer entre eux à la volée.

Lorsqu'un contexte est actif, Docker dirigera toutes vos commandes vers cet hôte. Si vous utilisez principalement une installation Docker locale, mais que vous devez parfois démarrer des conteneurs en production, les contextes Docker sont une option qui s'offre à vous.

Tout point de terminaison Docker valide peut être transformé en contexte. Vous pouvez câbler des installations Docker Engine régulières, des clusters Docker Swarm et des clusters Kubernetes dans le cloud. Chaque contexte stocké contient toutes les informations de connexion pour l'hôte référencé.

Créer un contexte

Les contextes sont gérés avec le docker context commande. Vous créez de nouveaux contextes à l'aide de docker context create . Vous devez fournir un nom pour votre contexte ainsi que sa configuration de point de terminaison.

Voici comment créer un contexte qui se connecte à un socket Docker exposé via TCP sur un hôte distant :

docker context create remote-host --docker host=tcp:///my-remote-host:2735

Les contextes utilisent Docker Swarm comme orchestrateur de conteneurs par défaut. Vous pouvez le définir explicitement à l'aide d'un indicateur :

docker context create remote-host 
    --default-stack-orchestrator=swarm 
    --docker host=tcp:///my-remote-host:2735

Pour créer une connexion à Kubernetes, modifiez le type d'orchestrateur. Vous devez également ajouter le --kubernetes flag et spécifiez le chemin d'accès à un fichier de configuration Kubernetes :

docker context create kubernetes-host 
    --default-stack-orchestrator=kubernetes 
    --kubernetes config-file=/home/username/.kube/config 
    --docker host=unix:///var/run/docker.sock

Sélectionner des contextes

Le contexte actif est commuté à l'aide de docker context use . Passez le nom du contexte que vous souhaitez activer.

docker context use remote-host

Toutes les commandes CLI suivantes seront exécutées à l'aide du point de terminaison donné par le nouveau contexte. Le contexte actif persistera automatiquement jusqu'à ce que vous le changiez. Pour passer à un autre contexte, exécutez docker context use de nouveau. Vous pouvez revenir au contexte par défaut avec votre socket Docker local en passant default comme nom de contexte.

Vous pouvez toujours remplacer le contexte sélectionné en ajoutant le --context flag à n'importe quelle commande Docker :

docker run ubuntu:latest --context remote-host

Le DOCKER_CONTEXT la variable d'environnement fonctionne également comme une alternative au --context drapeau. L'un ou l'autre mécanisme facilite un basculement temporaire vers un contexte différent sans vous obliger à exécuter et à annuler une docker context use commande.

Utilisation du DOCKER_HOST La variable d'environnement remplacera également le contexte actif. Cette variable force Docker à utiliser un point de terminaison de démon particulier au lieu de celui fourni par le contexte.

Vous pouvez inspecter le contexte actif en exécutant docker context ls . Cette commande répertorie tous les contextes disponibles dans votre configuration CLI. Le contexte actif est mis en évidence par un astérisque. Pour supprimer un contexte, exécutez docker context rm , en fournissant le nom du contexte. Il n'est pas possible de supprimer le default contexte.

Synchronisation des contextes entre machines

Les fichiers de contexte sont stockés dans le répertoire de configuration de votre Docker CLI. Il s'agit généralement de $HOME/.docker sur Linux. Vous trouverez vos contextes dans les contexts sous-répertoire. Chaque contexte obtient son propre dossier nommé avec un hachage unique. À l'intérieur, vous trouverez un meta.json fichier qui décrit le contexte. Seuls les contextes créés ont des fichiers stockés sur disque. Le default context hérite des paramètres de la configuration de votre démon Docker.

Si vous souhaitez synchroniser la configuration du contexte, vous pouvez sauvegarder les contexts dossier pour le déplacer vers une autre machine. Vous pouvez utiliser un transfert Rsync ou un référentiel Git pour simplifier les mises à jour régulières. Lier symboliquement le dossier à un partage réseau peut également être une option selon vos besoins.

Docker vous permet également d'exporter et d'importer des contextes via la CLI :

docker context export my-context

Cela créera un my-context.dockercontext fichier dans votre répertoire de travail. Le fichier inclut le meta.json contenu ainsi que des informations supplémentaires, telles que le nom du contexte. Transférez ce fichier sur une autre machine et exécutez docker context import my-context.dockercontext pour charger la configuration du contexte.

Vous pouvez également exporter un fichier de configuration Kubernetes autonome pour les contextes Kubernetes :

docker context export kubernetes-context --kubeconfig

Cela produira un fichier "kubeconfig" standard compatible avec les outils de l'écosystème Kubernetes tels que kubectl . La possibilité d'acquérir un fichier kubeconfig à partir d'un contexte Docker améliore l'interopérabilité de la chaîne d'outils. Rien dans le fichier ne sera spécifique à la CLI Docker.

Si vous avez besoin de modifier un contexte, utilisez la docker context update commande. Cela accepte les mêmes drapeaux que docker context create . Si vous effectuez des mises à jour groupées, vous pouvez modifier le meta.json fichiers pour manipuler directement vos contextes. Vous pouvez inspecter le meta.json d'un contexte fichier de la CLI avec docker context inspect my-context .

Conclusion

Les contextes Docker sont utiles lorsque vous devez déployer des conteneurs dans plusieurs environnements indépendants. Vous pouvez configurer des contextes pour votre socket Docker local, un serveur de préparation d'équipe partagé et votre serveur Kubernetes de production.

Docker a une prise en charge intégrée des clouds de conteneurs Microsoft Azure et Amazon ECS, qui peuvent également être ajoutés en tant que contextes. Il n'y a pas de limite au nombre de contextes que vous pouvez créer, vous avez donc une bonne polyvalence lorsque vous vous déplacez entre vos hôtes.

Le plus gros problème fonctionnel avec les contextes est sans doute la possibilité d'exécuter accidentellement une commande dans le mauvais contexte. Si vous avez oublié que vous êtes dans votre production contexte, en exécutant docker rm database-container pourrait avoir des conséquences dévastatrices. En cas de doute, exécutez docker context ls vérifiez d'abord ce que vous avez sélectionné.


Docker
  1. Comment ajouter plusieurs hôtes dans phpMyAdmin

  2. Comment déplacer des images Docker entre les hôtes

  3. Comment déployer des microservices avec Docker

  4. Comment déployer des applications avec Rancher

  5. Comment déployer un conteneur nginx avec Docker sur Linode

Comment remplacer Docker par Podman sur un Mac

Qu'est-ce que Docker ? Comment ça marche?

Qu'est-ce que Docker Compose et comment l'utiliser ?

Comment copier des fichiers avec Docker cp dans votre conteneur Docker

Comment créer une image Docker personnalisée avec Dockerfile

Comment auto-héberger plusieurs sites WordPress sur le même serveur avec Docker