(Tres) tutorial de docker-compose

Tabla de contenido

 

Introducción

1. Empiece rápidamente

2. Ejecute varios servicios

Expansión de mando

3. Suplemento de contenido


Introducción

Compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. Con Compose, usa un archivo Compose para configurar los servicios de su aplicación. Luego, con un solo comando, crea e inicia todos los servicios desde su configuración.

Compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. Con la combinación, puede utilizar el archivo de combinación para configurar los servicios de la aplicación. Luego, use un solo comando para crear e iniciar todos los servicios desde la configuración.

Podemos logover por lo anterior que, para decirlo sin rodeos, esta cosa es una herramienta (zhang) para administrar contenedores (yu), podemos usarla convenientemente para administrar nuestros dockercontenedores, lo que puede simplificar enormemente las complejas operaciones de la línea de comando.

1. Empiece rápidamente

Si es Maco el Windowsusuario usa la versión de escritorio de la Dockeraplicación, se instalará por defecto docker-compose(reemplazada con dc a continuación), si es así centos, puede usar el comando para que yum -y install docker-composesea ​​demasiado simple y no para explicar demasiado.

Verifique la versión, se puede mostrar para demostrar que la instalación es exitosa

lianying@lianyingdeiMac ~ % docker-compose version
docker-compose version 1.27.2, build 18f557f9
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.1g  21 Apr 2020

A continuación, tenemos una necesidad, ejecutar un service-amontaje en /usr/local, asignar un puerto como 8082y agregar una servicehostintranet de asignación de nombres de dominio ip, muchas personas pueden pensar que debería ser un dockercomando largo

docker run -idt -p 8082:8082 -v /Users/objcat/jar/service-a.jar:/usr/local/service-a.jar --name service-a java sh -c "echo 192.168.1.126 servicehost >> /etc/hosts && java -jar /usr/local/service-a.jar"

Entonces, un gran bulto, parece muy inconveniente, entonces estamos acostumbrados docker-composea optimizar el aspecto.

Primero crea un docker-compose.ymlarchivo llamado

lianying@lianyingdeiMac SpringBoot01 % touch docker-compose.yml
lianying@lianyingdeiMac SpringBoot01 % ls
docker-compose.yml

Luego, ábralo con un editor de texto y escriba lo siguiente

version: '2'
services:
 service-a: 
   image: java
   volumes:
     - /Users/objcat/jar/service-a.jar:/usr/local/service-a.jar
   ports:
     - 8082:8082
   command:
     - /bin/sh
     - -c
     - |
       echo 192.168.1.126 servicehost >> /etc/hosts
       java -jar /usr/local/service-a.jar

¿Esto parece ser mucho más claro? Ejecútelo a continuación.

lianying@lianyingdeiMac SpringBoot01 % docker-compose up -d
Starting springboot01_service-a_1 ... done

-dEjecutar en segundo plano; de lo contrario, el registro de ejecución aparecerá en su pantalla. . .

Luego verifique el estado de ejecución

zhangyideMacBook-Pro:jar objcat$ docker-compose ps
         Name                   Command           State           Ports         
--------------------------------------------------------------------------------
jar_service-             /bin/sh -c echo          Up      0.0.0.0:8082->8082/tcp
a_1_5827fa3204e8         192.168.1. ...   

Podemos ver que el servicio está en funcionamiento, intentemos visitar
http: // localhost: 8082 / hello

Éxito, esta parte llega a su fin.

2. Ejecute varios servicios

Algunas personas pueden preguntar, ¿cómo funcionan los servicios múltiples? Es muy simple, hagámoslo aquí.

Ahora tengo que hacer es abrir los tres servicios service-a, service-b, service-eureka, respectivamente, dos y un servicio de registro.

Vamos a mejorarlodocker-compose.yml

version: '2'

services:

 service-eureka: 
   image: java
   volumes:
     - /Users/objcat/jar/service-eureka.jar:/usr/local/service-eureka.jar
   ports:
     - 8081:8081
   command:
     - /bin/sh
     - -c
     - |
       echo 192.168.1.126 servicehost >> /etc/hosts
       java -jar /usr/local/service-eureka.jar

 service-a: 
   image: java
   volumes:
     - /Users/objcat/jar/service-a.jar:/usr/local/service-a.jar
   ports:
     - 8082:8082
   command:
     - /bin/sh
     - -c
     - |
       echo 192.168.1.126 servicehost >> /etc/hosts
       java -jar /usr/local/service-a.jar

 service-b: 
   image: java
   volumes:
     - /Users/objcat/jar/service-b.jar:/usr/local/service-b.jar
   ports:
     - 8083:8083
   command:
     - /bin/sh
     - -c
     - |
       echo 192.168.1.126 servicehost >> /etc/hosts
       java -jar /usr/local/service-b.jar

Vamos a ejecutarlo

zhangyideMacBook-Pro:jar objcat$ docker-compose up -d
jar_service-a_1_5827fa3204e8 is up-to-date
Creating jar_service-b_1_f7d01c317fab      ... done
Creating jar_service-eureka_1_57bb1a079e9b ... done
zhangyideMacBook-Pro:jar objcat$ docker-compose ps
              Name                             Command               State           Ports         
---------------------------------------------------------------------------------------------------
jar_service-a_1_5827fa3204e8        /bin/sh -c echo 192.168.1. ...   Up      0.0.0.0:8082->8082/tcp
jar_service-b_1_be87c0458e53        /bin/sh -c echo 192.168.1. ...   Up      0.0.0.0:8083->8083/tcp
jar_service-eureka_1_933d5a60af31   /bin/sh -c echo 192.168.1. ...   Up      0.0.0.0:8081->8081/tcp
zhangyideMacBook-Pro:jar objcat$ 

Registro

Visite el servicio-a

Visita servicio-b

¡En este punto ya podemos ejecutar múltiples servicios! ! ! ! Fin de clases--

Expansión de mando

Fuera de servicio

zhangyideMacBook-Pro:jar objcat$ docker-compose stop
Stopping jar_service-eureka_1_933d5a60af31 ... done
Stopping jar_service-b_1_be87c0458e53      ... done
Stopping jar_service-a_1_5827fa3204e8      ... done

Detener un solo servicio

zhangyideMacBook-Pro:jar objcat$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
94c3472638c8        java                "/bin/sh -c 'echo 19…"   16 minutes ago      Up 6 seconds        0.0.0.0:8081->8081/tcp   jar_service-eureka_1_933d5a60af31
8d1dfa0ec642        java                "/bin/sh -c 'echo 19…"   16 minutes ago      Up 6 seconds        0.0.0.0:8083->8083/tcp   jar_service-b_1_be87c0458e53
6be5f9d8f423        java                "/bin/sh -c 'echo 19…"   33 minutes ago      Up 6 seconds        0.0.0.0:8082->8082/tcp   jar_service-a_1_5827fa3204e8
zhangyideMacBook-Pro:jar objcat$ docker stop 6be5f9d8f423
6be5f9d8f423

Vuelva a ejecutar el servicio

zhangyideMacBook-Pro:jar objcat$ docker-compose up -d
jar_service-b_1_be87c0458e53 is up-to-date
Starting jar_service-a_1_5827fa3204e8 ... 
Starting jar_service-a_1_5827fa3204e8 ... done
zhangyideMacBook-Pro:jar objcat$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
94c3472638c8        java                "/bin/sh -c 'echo 19…"   19 minutes ago      Up 3 minutes        0.0.0.0:8081->8081/tcp   jar_service-eureka_1_933d5a60af31
8d1dfa0ec642        java                "/bin/sh -c 'echo 19…"   19 minutes ago      Up 3 minutes        0.0.0.0:8083->8083/tcp   jar_service-b_1_be87c0458e53
6be5f9d8f423        java                "/bin/sh -c 'echo 19…"   36 minutes ago      Up 13 seconds       0.0.0.0:8082->8082/tcp   jar_service-a_1_5827fa3204e8

Podemos ver que docker-composereconocerá automáticamente el estado abierto del contenedor y abrirá el que debe abrirse para nosotros.

3. Suplemento de contenido

1. Quizás mucha gente echo 192.168.1.126 servicehost >> /etc/hostsno me entiende muy bien

Permítanme hablar de ello aquí. El significado de este comando es agregar el servicehostnombre de dominio al hostsarchivo. El propósito es dejarme eurekadescubrir mi servicio, no escribir la dirección en el archivo de configuración. El servicio correspondiente a este comando se configura como

server:
  #服务端口号
  port: 8082
spring:
  application:
    #服务名称 - 服务之间使用名称进行通讯
    name: service-objcat-a
eureka:
  client:
    service-url:
      #填写注册中心服务器地址
      defaultZone: http://servicehost:8081/eureka
    #是否需要将自己注册到注册中心
    register-with-eureka: true
    #是否需要搜索服务信息
    fetch-registry: true
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
management:
  endpoints:
    web:
      exposure:
        include: "*"

 

Supongo que te gusta

Origin blog.csdn.net/sanmi8276/article/details/108737039
Recomendado
Clasificación