AllInfo

In che modo i contesti Docker ti consentono di lavorare con più host

I contesti nella CLI Docker forniscono un meccanismo semplificato per interagire con più endpoint Docker . Puoi impostare contesti per ciascuno dei tuoi host e passare da uno all'altro al volo.

Quando un contesto è attivo, Docker indirizzerà tutti i tuoi comandi a quell'host. Se utilizzi principalmente un'installazione Docker locale ma a volte devi avviare contenitori in produzione, i contesti Docker sono un'opzione disponibile.

Qualsiasi endpoint Docker valido può essere trasformato in un contesto. Puoi collegare le normali installazioni di Docker Engine, i cluster Docker Swarm e i cluster Kubernetes nel cloud. Ciascun contesto memorizzato contiene tutte le informazioni di connessione per l'host di riferimento.

Creazione di un contesto

I contesti sono gestiti con il comando docker context. Crei nuovi contesti utilizzando la creazione del contesto docker. Devi fornire un nome per il tuo contesto e la sua configurazione dell'endpoint.

Ecco come creare un contesto che si connette a un socket Docker esposto su TCP su un host remoto:

contesto docker create remote-host –docker host=tcp:///my-remote-host:2735 Advertisement

I contesti utilizzano Docker Swarm come orchestratore di contenitori predefinito. Puoi impostarlo esplicitamente usando un flag:

contesto docker create host remoto –default-stack-orchestrator=swarm –docker host=tcp:///my-remote-host:2735

Per creare una connessione a Kubernetes, cambia il tipo di orchestratore. Devi anche aggiungere il flag –kubernetes e specificare il percorso di un file di configurazione di Kubernetes:

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

Selezione dei contesti

Il contesto attivo viene cambiato utilizzando l'uso del contesto docker. Passa il nome del contesto che vuoi attivare.

contesto docker usa host remoto

Tutti i successivi comandi CLI verranno eseguiti utilizzando l'endpoint fornito dal nuovo contesto. Il contesto attivo persisterà automaticamente fino a quando non lo cambierai. Per passare a un contesto diverso, eseguire nuovamente l'uso del contesto della finestra mobile. Puoi tornare al contesto predefinito con il tuo socket Docker locale passando default come nome del contesto.

Puoi sempre sovrascrivere il contesto selezionato aggiungendo il flag –context a qualsiasi comando Docker:

docker esegue ubuntu:latest –context remote-host

La variabile d'ambiente DOCKER_CONTEXT funziona anche come alternativa al flag –context. Entrambi i meccanismi facilitano il passaggio temporaneo a un contesto diverso senza dover eseguire e ripristinare un comando di utilizzo del contesto docker.

Annuncio

L'utilizzo della variabile di ambiente DOCKER_HOST sovrascriverà anche il contesto attivo. Questa variabile forza Docker a utilizzare un particolare endpoint del demone invece di quello fornito dal contesto.

Puoi ispezionare il contesto attivo eseguendo docker context ls. Questo comando elenca tutti i contesti disponibili nella configurazione della CLI. Il contesto attivo è evidenziato con un asterisco. Per eliminare un contesto, eseguire docker context rm, fornendo il nome del contesto. Non è possibile eliminare il contesto predefinito.

Sincronizzazione dei contesti tra macchine

I file di contesto sono archiviati nella directory di configurazione della Docker CLI. Di solito è $HOME/.docker su Linux. Troverai i tuoi contesti nella sottodirectory dei contesti. Ogni contesto ottiene la propria cartella denominata con un hash univoco. All'interno, troverai un file meta.json che descrive il contesto. Solo i contesti creati hanno file archiviati su disco. Il contesto predefinito eredita le impostazioni dalla configurazione del tuo demone Docker.

Se desideri sincronizzare la configurazione del contesto, puoi eseguire il backup della cartella dei contesti per spostarla su un'altra macchina. Puoi utilizzare un trasferimento Rsync o un repository Git per semplificare gli aggiornamenti regolari. Anche il collegamento simbolico della cartella a una condivisione di rete potrebbe essere un'opzione a seconda delle tue esigenze.

Docker ti consente anche di esportare e importare contesti tramite la CLI:

docker context export my-context

Questo creerà un file my-context.dockercontext nella tua directory di lavoro. Il file include il contenuto di meta.json e alcune informazioni aggiuntive, come il nome del contesto. Trasferisci questo file su un'altra macchina ed esegui il contesto docker import my-context.dockercontext per caricare la configurazione del contesto.

Annuncio

In alternativa, puoi esportare un file di configurazione Kubernetes autonomo per i contesti Kubernetes:

esportazione del contesto docker kubernetes-context –kubeconfig

Questo produrrà un normale “kubeconfig” file compatibile con gli strumenti dell'ecosistema Kubernetes come kubectl. La capacità di acquisire un file kubeconfig da un contesto Docker migliora l'interoperabilità della toolchain. Nulla all'interno del file sarà specifico per la Docker CLI.

Se devi modificare un contesto, usa il comando docker context update. Questo accetta gli stessi flag della creazione del contesto docker. Se stai effettuando aggiornamenti in blocco, puoi modificare i file meta.json per manipolare direttamente i tuoi contesti. È possibile ispezionare il file meta.json di un contesto dalla CLI con il contesto docker inspect my-context.

Conclusione

I contesti Docker sono utili quando si necessità di distribuire contenitori in più ambienti indipendenti. Puoi configurare contesti per il tuo socket Docker locale, un server di staging del team condiviso e il tuo server Kubernetes di produzione.

Docker ha il supporto integrato per i cloud container Microsoft Azure e Amazon ECS, che possono essere aggiunti anche come contesti. Non c'è limite al numero di contesti che puoi creare, quindi hai una buona versatilità mentre ti sposti tra i tuoi host.

Probabilmente il più grande problema funzionale con i contesti è la possibilità di eseguire accidentalmente un comando contro il contesto sbagliato. Se hai dimenticato di essere nel tuo contesto di produzione, l'esecuzione di contenitore di database docker rm potrebbe avere conseguenze devastanti. In caso di dubbio, esegui prima docker context ls per verificare ciò che hai selezionato.

Exit mobile version