Orquestación de contenedores de Docker (componer)

¿Qué es la orquestación de contenedores?

  • Debido a la gran cantidad de contenedores de aplicaciones, cada vez es más difícil implementar y administrar una variedad de servicios y consumir una gran cantidad de recursos. Docker Compose solo puede resolver el modo de motor único de nodo único de Docker (modo de motor único) para aplicaciones de múltiples contenedores Problemas de implementación y administración, este proceso se denomina orquestación de contenedores;
  • Docker Compose no organiza los componentes de la aplicación a través de scripts y varios comandos extensos de la ventana acoplable, sino que describe la aplicación completa a través de un [archivo de configuración declarativa], para completar la implementación con un solo comando.
  • La orquestación de contenedores tiene las siguientes cuatro características (operaciones por lotes):
  1. El contenedor comienza al mismo tiempo;
  2. El contenedor se cierra al mismo tiempo;
  3. La imagen y el contenedor se eliminan al mismo tiempo;
  4. El espejo y el contenedor se construyen al mismo tiempo;

[Herramienta de orquestación de contenedores (actualmente principal)]

  1. docker-compose ;
  2. docker-enjambre ;
  3. Kubernetes / k8s ;

[Introducción a docker-compose]

  • El predecesor de Compose fue Fig. Después de que Fig fue adquirido por Docker, pasó a llamarse oficialmente Compose. Compose es retrocompatible con Fig (Fig es una poderosa herramienta Python basada en Docker desarrollada por Orchard, que permite a los usuarios definir aplicaciones de en un archivo YAML (para que pueda usar la herramienta de línea de comandos fig para implementar la aplicación y al mismo tiempo administrar todo el ciclo de vida de la aplicación);
  • Compose es una herramienta para desplegar (definir y ejecutar) aplicaciones Docker multi-contenedor, solo necesita un archivo de configuración Compose y un comando simple para crear y ejecutar todos los contenedores requeridos por la aplicación;
  • En el archivo de configuración, todos los contenedores están definidos por [servicios], y el [comando docker-compose] se usa para iniciar o detener el contenedor y todos los contenedores dependientes;
  • Cuando lo use, primero escriba un archivo YAML que defina una aplicación de varios contenedores (servicios múltiples) y luego entréguelo al comando docker-compose para su procesamiento. Docker Compose completará la implementación y la administración de la aplicación en función de la API del motor de Docker;

[Proceso de contenedor de imágenes de operación de Docker]

[Flujo de trabajo de orquestación de contenedores de Docker-compose]

[Instalar docker-compose en el entorno linux]

  1. Compruebe si Docker se ha instalado en el sistema Linux =》 sudo docker version
  2. curl 下载 compose (版本 1.11.2) 地址 =》 sudo curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s) - $ ( uname -m) "-o / usr / local / bin / docker-compose 
  3. Agregar permiso de redacción ejecutable =》 chmod + x / usr / local / bin / docker-compose
  4. Ver el resultado de la instalación de redacción =》 docker-compose --version, desinstalar usando =》 sudo rm / usr / local / bin / docker-compose
  5. Crear acceso directo de redacción =》 sudo ln -s / usr / local / bin / docker-compose / usr / bin / docker-compose

【Docker-compose 命令】 =》 docker-compose --help

  • build = "Construye o reconstruye el servicio de contenedor
  • bundle =》 Genera un paquete Docker a partir del archivo de redacción
  • config = "Verificar y ver el archivo de redacción
  • create = "Crea un servicio de contenedor
  • down = "Detener y eliminar contenedores, redes, imágenes y volúmenes
  • events = "Recibe eventos en tiempo real desde el contenedor
  • exec = "Ejecutar comandos en el contenedor en ejecución
  • help = "comando de ayuda
  • images = "Lista de espejos
  • kill = "Mata al contenedor
  • logs = "Ver los registros del contenedor
  • pause = "Pausar el servicio de contenedor
  • port = "número de puerto de salida
  • ps = "Lista de contenedores
  • pull = "Descargar la imagen del servicio de contenedor
  • push = "Subir la imagen del servicio de contenedor
  • reiniciar =》 El servicio de contenedor se reinicia
  • rm = "Eliminar contenedores detenidos
  • run = "Ejecutar un comando de una sola vez
  • scale = "Establecer el número de contenedores para el servicio
  • start = "Iniciar servicio de contenedor
  • stop = "Detener el servicio de contenedores
  • top = "Mostrar el proceso en ejecución
  • unpause = "Pausar el servicio de contenedor
  • up = "Crear e iniciar el contenedor
  • version = "Mostrar información de la versión de Docker-Compose

【Docker-compose.yml 文件】

  • Similar a los archivos josn, YAML es una abreviatura recursiva de "YAML no es un lenguaje de marcado" (YAML no es un lenguaje de marcado). Es un formato altamente legible que se usa para expresar la serialización de datos.
  • Referencia de formato de sintaxis YAML: https://www.runoob.com/w3cnote/yaml-intro.html
  • Configuración del archivo docker-compose.yml:

  1. Dirección de referencia: https://docs.docker.com/compose/compose-file/
  2. Configuración del núcleo:
version 指定compose版本 最好是3.0以上版本 目前最新是3.7版本
services 配置容器[容器列表]
	nginx: #配置容器标识(唯一编号)
	   image: #配置容器镜像
	   ports: #配置容器映射端口号[数组]
	   networks: #配置容器网络[数组]
networks 网络指定配置
	nginx-rmcore: #配置网络名称
		external: true #网络自定义
volumes 数据挂载配置
extensions 扩展配置
  • Escenarios de uso de la orquestación de contenedores;
  1. Gestión de lotes de imágenes y aplicaciones en contenedores en contenedores Docker;

¿Cómo aplicar la orquestación de contenedores y el destino para operar la imagen creada por nginx y .net core al mismo tiempo?

  1. Prepare la imagen nginx;
  2. Prepare la imagen construida por el proyecto principal .net;
  3. herramienta docker-compose;
  4. archivo de configuración docker-compose.yml;

[Operación real de Linux]:

  • Ingrese el directorio del contenedor creado =》 cd nginx
  • Ver la lista de directorios actual =》 ls
  • Crear carpeta de redacción =》 mkdir compose
  • Verifique la lista de directorios actual nuevamente =》 ls Habrá una carpeta de redacción en este momento
  • Introduzca la carpeta de redacción =》 cd compose
  • Crear archivo docker-compose.yml (con nombre estricto) =》 touch docker-compose.yml
  • Edite el archivo docker-compose.yml (especificación de sintaxis estricta) =》 vi docker-compose.yml Edite la información de configuración de la siguiente manera:
version: '3' #标识 componse 版本信息
services:
 netcore: #镜像标识(唯一)
  image: netcore #当前环境镜像名称,不用指明路径,会自动从本地寻找镜像
  ports: #暴露端口,端口映射
   - 8080:80  #把容器端口80映射到外部主机访问端口8080
   - 8081:443 #把容器镜像文件所在目录端口443映射到外部访问端口8081
 nginx:
  image: nginx
  ports:
   - 8090:80


#注:上面符号 - 表示数组,注意空格缩进表示层级,该文件配置严格遵循YAML语法配置
  • La configuración del archivo docker-compose.yml anterior está completa, guarde y ejecute =》 wq
  • Verifique el directorio de archivos actual nuevamente =》 ls verifique si hay un archivo docker-compose.yml en él
  • Ejecute el contenedor en lotes a través de la información de configuración del archivo docker-compose.yml =》 docker-compose up En este momento, se generarán dos mensajes
  1. Creando compose_netcore_1 ... hecho
  2. Creando compose_nginx_1 ... hecho
  • Ver la información del contenedor creada en lotes =》 docker ps -a / docker container ls -a 

El proceso de configuración anterior realiza la orquestación del contenedor, y se puede acceder a los contenedores creados por lotes a través de la IP del host actual y el puerto correspondiente [netcore y nginx];

  • redactar contenedores de parada por lotes (y eliminar contenedores, redes, imágenes y volúmenes) = "docker-compose down
  • Para verificar si eliminar la información, verifique la lista de todos los contenedores =》 docker ps -a / docker container ls -a 

Nota: defecto de orquestación de contenedor =》 docker-compose solo admite la implementación de aplicaciones de contenedor y la gestión de orquestación en el host de un solo nodo de la ventana acoplable;

¿Cómo utilizar el contenedor nginx creado para invertir el proxy netcore?

  • Ingrese el contenedor nginx (puenteado a través de Bash Shell) = "docker exec -it [nombre-contenedor / id] / bin / bash
  • Ingrese el directorio actual =》 cd /
  • Ver directorio de carpetas de la lista =》 ls
  • Ingrese el directorio de instalación del contenedor nginx (generalmente bajo el directorio / usr / local) = "cd / usr / local
  • Ver el directorio de la carpeta de la lista de nuevo =》 ls
  • Ingrese el directorio del contenedor nginx =》 cd nginx / Verifique la lista de directorios de archivos actual =》 ls verá el directorio de archivos conf
  • Ingrese conf directorio =》 cd conf ver lista =》 ls existe nginx.conf
  • Edite el archivo nginx.conf =》 vi nginx.conf / vim nginx.conf
  1. Anote la configuración predeterminada en [servidor] / [ubicación], escriba [netcore] contenedor ip: puerto (puerto expuesto) = "http_proxy http://192.168.48.3:8081; 
  2. Guarde y ejecute nginx.conf = "wq
  • Salir del contenedor ngixn =》 salir
  • Ver la lista de directorios actual =》 ls
  • 重启 componse =》 docker-componse reiniciar

[¿Cómo realizar la comunicación en red entre contenedores?

En este momento, el navegador puede ver que el contenedor nginx no es válido (no ejecutará el contenedor netcore como un proxy inverso). Dado que los contenedores en la ventana acoplable están aislados entre sí, los contenedores no pueden comunicarse directamente entre sí. esta vez, necesita encontrar un intermediario (contenedor de ventana acoplable, herramienta de administración de red =》 red), entrada de terminal de shell de Linux =》 docker --help Aparecerá uno de los comandos de administración =》 [red Administrar redes]

  • Ver el contenedor de la ventana acoplable [comando de administración de red] información = "red de la ventana acoplable --help

  • Solución: utilice un modo puente personalizado (DRIVER / bridge) para acceder a la red y realizar la comunicación entre contenedores
  1. Cree una red (puente predeterminado, ámbito local), el identificador / nombre del puente es (netcore-nginx) = "red acoplable crear netcore-nginx
  2. Ver la lista actual del directorio de red del nodo de la ventana acoplable = "la red de la ventana acoplable ls muestra información [ID DE RED / ID de red, NOMBRE / nombre de red, CONTROLADOR / modo de unidad de red, ALCANCE / rango de red]
  3. Busque el archivo docker-compose.yml y cambie al directorio donde se encuentra el archivo =》 ls
  4. Edite el archivo docker-compose.yml y conecte el contenedor [netcore, nginx] al modo puente de red. La información de configuración es la siguiente:
version: '3' #标识 compones 版本信息
services:
 netcore: #镜像标识(唯一)
  image: netcore #当前环境镜像名称,不用指明路径,会自动从本地寻找镜像
  ports: #暴露端口,端口映射
   - 8080:80  #把容器端口80映射到外部主机访问端口8080
   - 8081:443 #把容器镜像文件所在目录端口443映射到外部访问端口8081
  networks:
   - netcore-nginx
 nginx:
  image: nginx
  ports:
   - 8090:80
  networks: #单个容器内局部网络配置
   - netcore-nginx
networks: #docker 网络配置声明,此处是全局网络配置
 netcore-nginx: #自定义网络名称
  external: true #启动外部访问

# 1.上面符号 - 表示数组,注意空格缩进表示层级,该文件配置严格遵循YAML语法配置
# 2.上面配置信息,services 配置了两个容器,分别是 netcore 和 nginx ,并且同时使用自定义的网络桥接模式 netcore-nginx 实现容器相互通信;
# 3.和 serices 同级的 networks 配置信息,告诉 docker 启动自定义桥接模式网络 netcore-nginx ;
  • Salga del archivo docker-componse.yml y guarde =》 wq
  • Reinicie componse para que la información de configuración tenga efecto =》 docker-componse restart

Verifique el navegador nuevamente para ver si el contenedor nginx implementa el contenedor netcore de proxy inverso. Si aparece la información del sitio predeterminado de nginx, preste atención a la información de configuración nginx.conf, porque después de reiniciar la configuración de la herramienta de respuesta, la información no se guardará , y se restaurará el contenedor original. Modifique nginx.conf / server / location [proxy_pass http: // [netcore container ip: port];] información, inicie y guarde wq, y luego reinicie dentro del contenedor nginx:

  1. Cambiar directorio =》 cd ..
  2. Ver la lista de directorios actual =》 ls
  3. Ingrese al directorio sbin =》 cd sbin
  4. Verifique la lista de directorios actual nuevamente =》 ls Ahora verá nginx 
  5. Reiniciar nginx =》 ./ nginx reiniciar o recargar =》 ./ nginx -s recargar

En este momento, vuelva a comprobar el navegador para asegurarse de que la información de configuración anterior sea correcta y que el acceso normal sea normalmente posible = "Realice el proxy inverso nginx netcore;

 

[¿Cómo comprobar la dirección IP de la red netcore del contenedor?

  • Ver información jerárquica del contenedor netcore (detalles de configuración de la instalación) = "inspección del contenedor de la ventana acoplable [nombre del contenedor / id] 
  1. = "Marque [NetworkSettings] / [Networks] / [IPAddress], la IP que se muestra en la configuración del archivo es la ip de netcore 
  2. = "Ver el número de puerto expuesto al exterior [NetworkSettings] / [Ports] / [HostPort]
  • Ver toda la información del contenedor docker =》 contenedor dockre ls -a 
  1. =》 Busque el contenedor netcore correspondiente para ver el puerto expuesto;

 

Nota: En el proceso de configuración anterior, después de reiniciar el contenedor, los datos del contenedor no se conservarán (los datos del contenedor se mantienen en la memoria) y la IP del contenedor también cambiará.

[Volúmenes de montaje de datos del contenedor]: obtenga la persistencia de los datos del contenedor;

Dado que la herramienta [redactar] solo puede configurar e implementar aplicaciones de contenedor en un único nodo de la ventana acoplable y no puede implementar la administración de nodos cruzados de la ventana acoplable, el equipo oficial de la ventana acoplable ha implementado la herramienta [docker-swarm] para implementar la administración del clúster de la ventana acoplable. continuará explicando;

Supongo que te gusta

Origin blog.csdn.net/ChaITSimpleLove/article/details/105280668
Recomendado
Clasificación