Orquestación de contenedores de Docker Compose

一 、 Docker Compose

(1) Descripción general de Docker Compose

  • El predecesor de Docker Compose es Fig. Es una herramienta para definir y ejecutar múltiples contenedores Docker.
  • Con Compose, no hay necesidad de usar scripts de shell para iniciar el contenedor, pero use archivos YAML para configurar todos los servicios requeridos por la aplicación.
  • Luego use un comando para crear e iniciar todos los servicios basados ​​en la configuración del archivo YAML
  • Docker Compose es muy adecuado para escenarios en los que se combinan varios contenedores para el desarrollo.

(2) 、 YAML

1. YAML es un formato de serialización de datos muy intuitivo con un lenguaje de marcado

2. Formato de archivo y precauciones para la escritura

  • No se admite la sangría de la tecla de tabulación y se requiere una sangría de espacio
  • Por lo general, sangran 2 espacios al principio
  • Sangra 1 espacio después del carácter, como dos puntos, coma, barra
  • Comentar con el signo #
  • Use comillas simples si contiene caracteres especiales
  • Los valores booleanos deben ir entre comillas.

(3) Campos de uso común para la configuración de Docker Compose

Campo descripción
construir contexto dockerfile Especifique el nombre del archivo Dockerfile para construir la ruta del contexto espejo
imagen Espejo especificado
mando Ejecute el comando, sobrescriba el comando predeterminado
nombre del contenedor Especifique el nombre del contenedor, porque el nombre del contenedor es único, si especifica un nombre personalizado, no puede escalar
desplegar Especifique la configuración relacionada con el servicio de implementación y operación, que solo se puede usar en el modo Swarm
medio ambiente Agregar variables de entorno
redes Únete a la red
puertos Exponga el puerto del contenedor, el mismo que -p, pero el puerto no puede ser inferior a 60
volúmenes Montar la ruta del host o el volumen de comando
reiniciar Reiniciar política, predeterminada no, siempre, sin fallas, a menos que se detenga
nombre de host Nombre de host del contenedor

(4) Comandos comunes de Docker Compose

Campo descripción
construir Reconstruir el servicio
PD Contenedores de lista
arriba Crea e inicia el contenedor
ejecutivo Ejecutar comandos en el contenedor.
escala Especifique la cantidad de contenedores de servicios para comenzar
cima Mostrar proceso de contenedor
registros Ver la salida del contenedor
abajo Eliminar contenedores, redes, volúmenes de datos y espejos
detener / iniciar / reiniciar Detener / iniciar / reiniciar el servicio

(5), redactar descripción del comando

Formato de comando básico

docker-compose [options] [COMMAND] [ARGS...]

opción docker-compose

--verbose:输出更多调试信息
--version:打印版本并退出
-f,--file FILE:使用特定的compose模板文件,默认为docker-compose.yml
-p, --project-name NAME:指定项目名称,默认使用目录名称

En segundo lugar, use docker-compose para crear un entorno de cónsul

alrededores:

apodo del servidor Servicio
Servidor 1: 192.168.182.11 Docker-ce 、 Redactar 、 Cónsul 、 Cónsul-temple
Servidor 2: 192.168.182.22 Docker-ce 、 Registrador

demanda:

  • Realice la intercomunicación entre contenedores y contenedores en una red de una sola máquina
  • Utilice Docker Compose para crear un contenedor
  • Desarrolle el servicio Consul para realizar el descubrimiento y la actualización automáticos

Instalar paquete de cónsul

[root@localhost ~]# systemctl start firewalld
[root@localhost ~]# setenforce 0
关闭防火墙,系统自带保护机制
mkdir /root/consul
cd /root/consul/
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/bin/     ##移动到/usr/bin目录相当于可以直接被系统使用

consul agent \   ##构建agent功能
> -server \      ##server模式  
> -bootstrap \
> -ui \
> -data-dir=/var/lib/consul-data \
> -bind=192.168.182.11 \
> -client=0.0.0.0 \        ##监听客户端所有地址
> -node=consul-server01 &> /var/log/consul.log &

Inserte la descripción de la imagen aquí
Ver información del clúster

consul members
consul info | grep leader

Inserte la descripción de la imagen aquí
Obtenga información del clúster a través de httpd api

curl 127.0.0.1:8500/v1/status/peers /查看集群server成员
curl 127.0.0.1:8500/v1/status/leader /集群 Raf leader
curl 127.00.1:8500/v1/catalog/services //注册的所有服务
curl 127.0.0.1:8500/v1/catalog/nginx /查看 nginx 服务信息
curl 127.0.0.1:8500/v1/catalog/nodes //集群节点详细信息

-------------------------------------------- El servicio de contenedores se une automáticamente al clúster nginx --------------------------------------------

1. Instale Gliderlabs / Registrator (puede verificar el estado de ejecución del contenedor y registrarse automáticamente, y también puede cancelar el servicio del contenedor de la
ventana acoplable al centro de configuración del servicio). Actualmente, se admiten Consul, Etcd y SkyDNS2

Inicie otro servidor para la operación 192.168.182.22

docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.182.22 \
consul://192.168.182.11:8500

2. Pruebe si la función de servicio es normal

docker run -itd -p 83:80 --name test-1 -h test1 nginx
docker run -itd -p 84:80 --name test-2 -h test2 nginx
docker run -itd -p 88:80 --name test-3 -h test3 httpd
docker run -itd -p 89:80 --name test-4 -h test4 httpd

3. Verifique que los servicios http y nginx estén registrados en el
navegador consul , ingrese http://192.168.182.11:8500, haga clic en "NODES", y luego haga clic en "consul-server", habrá 5 servicios
Inserte la descripción de la imagen aquí
. Ver los servicios en el servidor del cónsul

[root@consul consul]#curl 127.0.0.1:8500/v1/catalog/services
{
    
    "consul":[],"httpd":[],"nginx":[]}

Inserte la descripción de la imagen aquí
4. Instalar consul-template

Consul-Template es un proceso demonio utilizado para consultar información del clúster Consul en tiempo real, actualizar cualquier número de plantillas especificadas en el sistema de archivos y generar archivos de configuración. Una vez completada la actualización, puede optar por ejecutar el comando de shell para realizar la operación de actualización y volver a cargar Nginx. Consul-Template puede consultar el catálogo de servicios, claves, valores-clave, etc. en Consul.
Esta potente función abstracta y la plantilla de lenguaje de consulta pueden hacer que Consul-Template sea especialmente adecuado para crear archivos de configuración de forma dinámica.
Por ejemplo: cree Apache / Nginx Proxy Balancers, Haproxy Backends

5. Prepare el archivo de plantilla nginx de plantilla

## Operar en cónsul

//在consul服务器上操作
vim /root/consul/nginx.ctmpl

upstream http_backend {
    
    
  {
    
    {
    
    range service "nginx"}}
   server {
    
    {
    
    .Address}}:{
    
    {
    
    .Port}};
  {
    
    {
    
    end}}
}

server {
    
    
  listen 83;
  server_name localhost 192.168.200.40;
  access_log /var/log/nginx/gcc.cn-access.log;
  index index.html index.php;
  location / {
    
    
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_backend;
}
}

El siguiente es el comentario

vim /root/consul/nginx.ctmpl

upstream http_backend {
    
    					#群集模块模板
    {
    
    {
    
    range service "nginx"}}				#指定nginx服务项
     server {
    
    {
    
    .Address}}:{
    
    {
    
    .Port}};			#指向真实服务器的地址和端口“{
    
    {
    
    .Address}}” 此参数会根据consul群集的参数自动设置上去
     {
    
    {
    
    end}}						#结束语句(以上为轮询请求方式)
}

server {
    
    
       listen 88;					#对外提供的端口,可自行设置,只要不起冲突
       server_name localhost 192.168.126.10;		#本地反向代理的节点地址
       access_log /var/log/nginx/kgc.cn-access.log;	#访问日志文件目录(需手动创建)
       index index.html index.php;			#指定访问的index 首页类型
       location / {
    
    
          proxy_set_header HOST $host;			#反向代理的请求头部信息
          proxy_set_header X-Real-IP $remote_addr;	#真实服务器IP
          proxy_set_header Client-IP $remote_addr; 	#客户IP
          proxy_set_header X-Fprwarded-For $proxy_add_x_forwarded_for;	#Forward转发地址
          proxy_pass http://http_backend;		#反向代理指向upstream地址池
                 }
       }

6, compile e instale nginx

yum install -y gcc gcc-c++ pcre-devel zlib-devel 

Coloque el paquete comprimido nginx en el directorio / opt /

tar zxvf nginx-1.12.0.tar.gz -C /opt
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx
make && make install

7, configurar nginx

vim /usr/local/nginx/conf/nginx.conf

Agregar en el módulo http

http {
    
    
   include  mime.types;
   include  vhost/*.conf;   #添加虚拟主机目录
   default_type application/octet-stream;

Inserte la descripción de la imagen aquí
// Crear directorio de archivos vhost de host virtual

mkdir /usr/local/nginx/conf/vhost

// Crear directorio de archivos de registro

mkdir /var/log/nginx

// Iniciar nginx

/usr/local/nginx/sbin/nginx

8. Configure e inicie la plantilla.

Cargue el paquete consul-template_0.19.3_linux_amd64.zip en el directorio / root

unzip consul-template_0.19.3_linux_amd64.zip 
mv consul-template /usr/bin/

Habilitar plantilla

consul-template -consul-addr 192.168.182.11:8500 -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/test.conf:/usr/local/nginx/sbin/nginx -s reload" --log-level=info
参数详解
-consul-addr 192.168.226.132:8500:指向consul服务端节点

-template "/root/consul/nginx.ctmpl:指定模板路径

:/usr/local/nginx/conf/vhost/test.conf:指定文件生成到vhost中并命名为test.conf

:/usr/local/nginx/sbin/nginx -s reload:不中断服务reload重载nginx服务让配置文件生效

–log-level=info:产生日志,级别为info(日志生成位置在nginx.ctml中定义“access_log”)
//另外打开-个终端查看生成配置文件
[root@localhost vhost]#cat /usr/local/nginx/conf/vhost/test.conf
upstream http_backend {
    
    
  
   server 192.168.182.11:83;
  
   server 192.168.182.11:84;
  
}

server {
    
    
  listen 83;
  server_name localhost 192.168.182.11;
  access_log /var/log/nginx/gcc.cn-access.log;
  index index.html index.php;
  location / {
    
    
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_backend;
}
}

Agregue un nodo contenedor nginx, pruebe el descubrimiento del servidor y las funciones de actualización de la configuración

//在registrator(192.168.182.11)服务端注册
docker run -itd -p 85:80 --name test-5 -h test5 nginx

Inserte la descripción de la imagen aquí

Configuración de múltiples nodos de Consul

//添加一台已有docker环境的服务器192.168.182.33/24加入已有的群集中

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/ib/consul-data \
-bind=192.168.182.33 \
-client=0.0.0.0 \
-node=consul-server02 \
-enable-script-checks=true \
-datacenter=dc1 \
-join 192.168.182.11 &> /var/log/consul.log &


-enable-script-checks=true: 设置检查服务为可用
-datacenter: 数据中心名称
-join: 加入到已有的集群中

Supongo que te gusta

Origin blog.csdn.net/panrenjun/article/details/115290274
Recomendado
Clasificación