GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

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

I contesti nella Docker CLI 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 i container in produzione, i contesti Docker sono un'opzione a tua disposizione.

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 docker context comando. Crei nuovi contesti usando docker context create . Devi fornire un nome per il tuo contesto e la relativa configurazione dell'endpoint.

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

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

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

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

Per creare una connessione a Kubernetes, cambia il tipo dell'agente di orchestrazione. Devi anche aggiungere il --kubernetes contrassegnare e specificare il percorso di un file di configurazione Kubernetes:

docker context create 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 docker context use . Passa il nome del contesto che vuoi attivare.

docker context use remote-host

Tutti i successivi comandi CLI verranno eseguiti utilizzando l'endpoint fornito dal nuovo contesto. Il contesto attivo persisterà automaticamente finché non lo modificherai. Per passare a un contesto diverso, esegui docker context use ancora. Puoi ripristinare il contesto predefinito con il tuo socket Docker locale passando default come nome del contesto.

Puoi sempre sovrascrivere il contesto selezionato aggiungendo il --context segnala a qualsiasi comando Docker:

docker run ubuntu:latest --context remote-host

Il DOCKER_CONTEXT La variabile di ambiente funziona anche come alternativa al --context bandiera. Entrambi i meccanismi facilitano il passaggio temporaneo a un contesto diverso senza dover eseguire e ripristinare un docker context use comando.

Usando il DOCKER_HOST La variabile di ambiente sovrascriverà anche il contesto attivo. Questa variabile obbliga Docker a utilizzare un particolare endpoint del demone invece di quello fornito dal contesto.

Puoi controllare 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, esegui docker context rm , fornendo il nome del contesto. Non è possibile eliminare il default contesto.

Sincronizzazione di 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 nei contexts sottodirectory. Ogni contesto ottiene la propria cartella denominata con un hash univoco. All'interno troverai un meta.json file che descrive il contesto. Solo i contesti creati hanno file archiviati su disco. Il default il contesto eredita le impostazioni dalla configurazione del tuo demone Docker.

Se desideri sincronizzare la configurazione del contesto, puoi eseguire il backup dei contexts cartella per spostarlo 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 my-context.dockercontext file nella tua directory di lavoro. Il file include meta.json contenuti e alcune informazioni extra, come il nome del contesto. Trasferisci questo file su un'altra macchina ed esegui docker context import my-context.dockercontext per caricare la configurazione del contesto.

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

docker context export kubernetes-context --kubeconfig

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

Se devi modificare un contesto, utilizza l'docker context update comando. Questo accetta gli stessi flag di docker context create . Se stai effettuando aggiornamenti in blocco, puoi modificare il meta.json file per manipolare direttamente i tuoi contesti. Puoi esaminare il meta.json di un contesto file dalla CLI con docker context inspect my-context .

Conclusione

I contesti Docker sono utili quando è necessario distribuire contenitori in più ambienti indipendenti. Puoi configurare i contesti per il tuo socket Docker locale, un server di gestione temporanea 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 muovi tra i tuoi host.

Probabilmente il più grande problema funzionale con i contesti è la possibilità di eseguire accidentalmente un comando nel contesto sbagliato. Se hai dimenticato che sei nella tua production contesto, eseguendo docker rm database-container potrebbe avere conseguenze devastanti. In caso di dubbio, esegui docker context ls prima di controllare ciò che hai selezionato.


Docker
  1. Come spostare le immagini Docker tra host

  2. Come installare Jenkins con Docker

  3. Come distribuire microservizi con Docker

  4. Come distribuire app con Rancher

  5. Come distribuire un container nginx con Docker su Linode

Come sostituire Docker con Podman su un Mac

Cos'è Docker? Come funziona?

Che cos'è Docker Compose e come lo usi?

Come copiare file con Docker cp nel tuo Docker Container

Come creare un'immagine Docker personalizzata con Dockerfile

Come ospitare autonomamente più siti WordPress sullo stesso server con Docker