GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo los contextos de Docker le permiten trabajar con múltiples hosts

Los contextos en la CLI de Docker proporcionan un mecanismo simplificado para interactuar con múltiples puntos finales de Docker. Puede configurar contextos para cada uno de sus hosts y alternar entre ellos sobre la marcha.

Cuando un contexto está activo, Docker dirigirá todos sus comandos a ese host. Si utiliza principalmente una instalación local de Docker, pero a veces necesita iniciar contenedores en producción, los contextos de Docker son una opción disponible para usted.

Cualquier punto final de Docker válido se puede convertir en un contexto. Puede conectar instalaciones regulares de Docker Engine, clústeres de Docker Swarm y clústeres de Kubernetes en la nube. Cada contexto almacenado contiene toda la información de conexión para el host al que se hace referencia.

Creando un Contexto

Los contextos se administran con el docker context dominio. Crea nuevos contextos usando docker context create . Debe proporcionar un nombre para su contexto, así como su configuración de punto final.

Aquí se explica cómo crear un contexto que se conecta a un socket Docker expuesto a través de TCP en un host remoto:

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

Los contextos usan Docker Swarm como su orquestador de contenedores predeterminado. Puede configurar esto explícitamente usando una bandera:

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

Para crear una conexión con Kubernetes, cambie el tipo de orquestador. También debe agregar el --kubernetes marque y especifique la ruta a un archivo de configuración de Kubernetes:

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

Selección de contextos

El contexto activo se cambia usando docker context use . Pase el nombre del contexto que desea activar.

docker context use remote-host

Todos los comandos CLI subsiguientes se ejecutarán utilizando el punto final proporcionado por el nuevo contexto. El contexto activo persistirá automáticamente hasta que lo cambie. Para cambiar a un contexto diferente, ejecute docker context use otra vez. Puede volver al contexto predeterminado con su socket Docker local pasando default como el nombre de contexto.

Siempre puede anular el contexto seleccionado agregando --context marca a cualquier comando de Docker:

docker run ubuntu:latest --context remote-host

El DOCKER_CONTEXT La variable de entorno también funciona como una alternativa al --context bandera. Cualquiera de los dos mecanismos facilita un cambio temporal a un contexto diferente sin obligarlo a ejecutar y revertir un docker context use comando.

Usando el DOCKER_HOST La variable de entorno también anulará el contexto activo. Esta variable obliga a Docker a usar un punto final de daemon en particular en lugar del proporcionado por el contexto.

Puede inspeccionar el contexto activo ejecutando docker context ls . Este comando enumera todos los contextos disponibles en su configuración CLI. El contexto activo se resalta con un asterisco. Para eliminar un contexto, ejecute docker context rm , proporcionando el nombre de contexto. No es posible eliminar el default contexto.

Sincronización de contextos entre máquinas

Los archivos de contexto se almacenan en el directorio de configuración de la CLI de Docker. Suele ser $HOME/.docker en Linux. Encontrará sus contextos en contexts subdirectorio. Cada contexto tiene su propia carpeta nombrada con un hash único. Dentro, encontrarás un meta.json archivo que describe el contexto. Solo los contextos creados tienen archivos almacenados en el disco. El default El contexto hereda la configuración de la configuración del demonio Docker.

Si desea sincronizar la configuración de contexto, puede hacer una copia de seguridad de los contexts carpeta para moverla a otra máquina. Puede usar una transferencia Rsync o un repositorio Git para simplificar las actualizaciones periódicas. La vinculación simbólica de la carpeta a un recurso compartido de red también puede ser una opción según sus requisitos.

Docker también le permite exportar e importar contextos a través de la CLI:

docker context export my-context

Esto creará un my-context.dockercontext archivo en su directorio de trabajo. El archivo incluye el meta.json contenidos, así como alguna información adicional, como el nombre del contexto. Transfiera este archivo a otra máquina y ejecute docker context import my-context.dockercontext para cargar la configuración del contexto.

Como alternativa, puede exportar un archivo de configuración de Kubernetes independiente para contextos de Kubernetes:

docker context export kubernetes-context --kubeconfig

Esto producirá un archivo "kubeconfig" regular compatible con las herramientas del ecosistema de Kubernetes como kubectl . La capacidad de adquirir un archivo kubeconfig desde un contexto de Docker mejora la interoperabilidad de la cadena de herramientas. Nada dentro del archivo será específico de la CLI de Docker.

Si necesita editar un contexto, use la docker context update dominio. Esto acepta las mismas banderas que docker context create . Si está realizando actualizaciones masivas, puede editar el meta.json archivos para manipular directamente sus contextos. Puede inspeccionar el meta.json de un contexto archivo de la CLI con docker context inspect my-context .

Conclusión

Los contextos de Docker son útiles cuando necesita implementar contenedores en múltiples entornos independientes. Puede configurar contextos para su socket Docker local, un servidor de prueba de equipo compartido y su servidor Kubernetes de producción.

Docker tiene soporte integrado para las nubes de contenedores de Microsoft Azure y Amazon ECS, que también se pueden agregar como contextos. No hay límite en la cantidad de contextos que puede crear, por lo que tiene una buena versatilidad a medida que se mueve entre sus anfitriones.

Podría decirse que el mayor problema funcional con los contextos es la posibilidad de ejecutar accidentalmente un comando en el contexto incorrecto. Si has olvidado que estás en tu production contexto, ejecutando docker rm database-container podría tener consecuencias devastadoras. En caso de duda, ejecute docker context ls primero para comprobar lo que ha seleccionado.


Docker
  1. Cómo instalar WordPress con Docker, una guía fácil de seguir

  2. Cómo agregar varios hosts en phpMyAdmin

  3. Cómo mover imágenes de Docker entre hosts

  4. Cómo implementar microservicios con Docker

  5. Cómo implementar aplicaciones con Rancher

Cómo reemplazar Docker con Podman en una Mac

¿Qué es Docker? ¿Como funciona?

¿Qué es Docker Compose y cómo se usa?

Cómo copiar archivos con Docker cp a su Docker Container

Cómo crear una imagen Docker personalizada con Dockerfile

Cómo alojar múltiples sitios de WordPress en el mismo servidor con Docker