Una breve discusión sobre el uso de Docker para implementar proyectos de paquetes de guerra en centos (jsp)


Prefacio:
Para abreviar la historia, este es mi primer artículo por capricho. Registro los pensamientos después de resolver los problemas reales que encontré. Si el resumen está incompleto, ¡espero que puedan darme algún consejo!

1. Preparación ambiental

Lo que he preparado aquí es el entorno de espejo virtual centos7 (VMware), la herramienta de conexión shell5 (utilizada para transferir archivos) y Navicat15 (herramienta de visualización de bases de datos).

Enlace: https://pan.baidu.com/s/1s6yRXsWtbvxsg164Código
de extracción cir-bg: 6666

No escribiré nada más aquí, una vez hechos los preparativos, expliquemos un poco sobre Docker.

2. Ventajas de Docker

1. Simplificar los trámites

Docker permite a los desarrolladores empaquetar sus aplicaciones y dependencias en un contenedor portátil y luego publicarlas en cualquier máquina Linux popular para lograr la virtualización. Docker ha cambiado la forma de virtualización, permitiendo a los desarrolladores colocar directamente sus resultados en Docker para su administración. La comodidad y la velocidad ya son las mayores ventajas de Docker. Las tareas que antes tomaban días o incluso semanas se pueden completar en solo segundos gracias al procesamiento de contenedores Docker.

2. Evite la fobia a elegir

Si tiene fobia a elegir, sea un paciente veterano. ¡Docker te ayuda a empaquetar tus problemas! Por ejemplo, las imágenes de Docker; las imágenes de Docker contienen el entorno de ejecución y la configuración, por lo que Docker puede simplificar la implementación de múltiples instancias de aplicaciones. Por ejemplo, aplicaciones web, aplicaciones en segundo plano, aplicaciones de bases de datos, aplicaciones de big data como clústeres de Hadoop, colas de mensajes, etc. se pueden empaquetar en un espejo para su implementación.

3. Ahorra dinero

Por un lado, la llegada de la era de la computación en la nube libera a los desarrolladores de la necesidad de configurar hardware costoso para lograr resultados. Docker ha cambiado la mentalidad de que un alto rendimiento debe tener un precio elevado. La combinación de Docker y la nube permite aprovechar al máximo el espacio en la nube. No sólo resuelve el problema de la gestión del hardware, sino que también cambia la forma de virtualización.

3. Estructura acoplable

Demonio Docker (Demonio Docker)

Docker Daemon es un proceso en segundo plano que se ejecuta en el host (DOCKER-HOST). Se puede comunicar con él a través del cliente Docker.

1.Cliente (cliente Docker)

El cliente Docker es la interfaz de usuario de Docker, que puede aceptar comandos de usuario e identificadores de configuración y comunicarse con el demonio de Docker. En la figura, Docker Build, etc. son todos comandos relacionados con Docker.

2.Imágenes (imagen de Docker)

Una imagen de Docker es una plantilla de solo lectura que contiene instrucciones para crear un contenedor de Docker. Es algo similar al CD de instalación del sistema. Puede usar el CD de instalación del sistema para instalar el sistema. De la misma manera, puede usar la imagen de Docker para ejecutar los programas en la imagen de Docker.

3.Contenedor (contenedor)

Un contenedor es una instancia ejecutable de una imagen. La relación entre imágenes y contenedores es algo similar a la relación entre clases y objetos en la tecnología orientada a objetos. Los contenedores se pueden iniciar, detener, mover y eliminar mediante comandos Docker API o CLI.

4.Registro

Docker Registry es un servicio que almacena y distribuye imágenes de forma centralizada. Después de crear la imagen de Docker, se puede ejecutar en el host actual. Pero si desea ejecutar esta imagen en otras máquinas, deberá copiarla manualmente. En este momento, puede utilizar Docker Registry para evitar la copia manual de imágenes.

Un Docker Registry puede contener varios repositorios de Docker, cada repositorio puede contener varias etiquetas de imagen y cada etiqueta corresponde a una imagen de Docker. Esto es algo similar al almacén de Maven. Si se compara Docker Registry con el almacén de Maven, entonces el almacén de Docker puede entenderse como la ruta de un determinado paquete jar y la etiqueta de la imagen puede entenderse como el número de versión del paquete jar.

4. Comparación entre Docker y máquinas virtuales

Como método de virtualización liviano, Docker tiene ventajas significativas sobre las máquinas virtuales tradicionales en la ejecución de aplicaciones:

Los contenedores Docker son muy rápidos y se pueden iniciar y detener en segundos, lo cual es mucho más rápido que los métodos tradicionales de máquinas virtuales.

Los contenedores Docker requieren muy pocos recursos del sistema y se pueden ejecutar miles de contenedores Docker simultáneamente en un host.

Docker facilita a los usuarios obtener, distribuir y actualizar imágenes de aplicaciones a través de operaciones similares a Git. Las instrucciones son simples y el costo de aprendizaje es bajo.

Docker admite mecanismos flexibles de creación e implementación automatizados a través de archivos de configuración Dockerfile para mejorar la eficiencia del trabajo.

5. Instalación de Docker

Docker es un producto comercial de código abierto con dos versiones: Community Edition (CE) y Enterprise Edition (EE). La versión empresarial incluye algunos servicios pagos, que generalmente no están disponibles para desarrolladores individuales.

Docker requiere que la versión del kernel del sistema CentOS sea al menos 3.10. Consulte los requisitos previos en esta página para verificar si su versión de CentOS es compatible con Docker.

Vaya directamente al enlace detallado del jefe: (El punto del que quiero hablar es cómo implementar el paquete de guerra a continuación)

https://cloud.tencent.com/developer/article/1701451

6. Descargue la imagen de Tomcat

  • versión de Docker //Compruebe si Docker se instaló correctamente

versión de Docker Ver información de versión

  • systemctl start docker //Inicia el servicio Docker
    Insertar descripción de la imagen aquí

  • docker pull tomcat // La última imagen se extrae y descarga de forma predeterminada
    -docker pull tomcat:8.5.38-jre8 // También puede especificar una versión específica.
    Insertar descripción de la imagen aquí
    Una vez completada la descarga, verifique si la imagen se descargó correctamente.

  • imágenes acoplables //Ver todas las imágenes instaladas
    Insertar descripción de la imagen aquí

  • ventana acoplable ejecutar -p 8080:8080 -d --name tomcat tomcat

  • Insertar descripción de la imagen aquí

  • -p 8080:8080 corresponde al puerto del host: puerto del contenedor

  • –nombre tomcat1 llamado tomcat1

  • El nombre del archivo de imagen utilizado por Tomcat:8.5.38-jre8

  • docker ps // Ver contenedores en ejecución.
    Insertar descripción de la imagen aquí
    Si está vacío, significa que no hay contenedores en ejecución.

  • docker ps -a //Incluye contenedores en ejecución y no en ejecución
    Insertar descripción de la imagen aquí

  • docker start tomcat1 // Comience por el nombre del contenedor o por la identificación delante del contenedor. El método consiste en reemplazar la identificación del contenedor con el nombre del contenedor tomcat1 -docker ps se
    Insertar descripción de la imagen aquí
    inicia
    Insertar descripción de la imagen aquí
    correctamente
    . También puede configurar este contenedor para que se inicie automáticamente en arranque
    y agregue –restart= al iniciar.siempre

  • docker run -itd --name tocmat1 -p 8080:8080 --restart=always tomcat:8.5.38-jre8

  • Nota: Este método es para volver a crear un nuevo contenedor Tomcat. Si ya existe un contenedor con el mismo nombre, se informará un error. Si ya se ha creado un contenedor Tomcat, utilice el siguiente método.

  • siempre //Reinicie el contenedor solo cuando el contenedor se haya detenido o Docker se haya detenido/reiniciado

Si el proyecto ha sido iniciado

  • docker update --restart=always tomcat1 // El último tomcat1 es el nombre del contenedor, que también se puede reemplazar con la identificación del contenedor. Hay
    Insertar descripción de la imagen aquí
    otra forma de generar un contenedor Tomcat:
  • docker run -itd --name tomcat2 --restart=always -p 8081:8080 -v /root/homework/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8.5.38-jre8
    Insertar descripción de la imagen aquí
  • -v mount file asigna la carpeta dentro del contenedor a un archivo personalizado. De lo contrario, se generará automáticamente.
  • /root/homework/tomcat/webapps es la dirección del archivo de la máquina física
  • :/usr/local/tomcat/webapps es la ubicación del archivo interno del contenedor tomcat2
  • 8081:8080 se usa aquí porque el puerto 8080 del host lo he dado al contenedor tomcat1. No he eliminado tomcat1 aquí. El puerto está ocupado, por lo que solo puedo dárselo a otros puertos desocupados o detener el uso. del contenedor tomcat1. También es posible asignar el puerto 8080 de tomcat2 al puerto 8080 del host.
    Insertar descripción de la imagen aquí
  • Hay un problema aquí, es decir, cuando el archivo webapps del contenedor Tomcat está montado en el host, la ip de acceso: puerto no se mostrará, si no está montado, se mostrará, pero no afectará el despliegue del paquete de guerra.
  • Contenedor Tomcat con archivos webapps montados:
    Insertar descripción de la imagen aquíContenedor Tomcat sin archivos montados:
    Insertar descripción de la imagen aquí

7. Descarga del espejo MYSQL

  • docker mysql // extrae la última imagen de forma predeterminada

  • Instalé 5.7.19 aquí. Puede cambiar el número de versión posterior según sus necesidades.
    Insertar descripción de la imagen aquí

  • docker run --name mysql:5.7.19 -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql_5.7.19 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    Insertar descripción de la imagen aquí

  • –nombre nombre del contenedor

  • -p 13306:3306 puerto de la máquina física: puerto interno del contenedor

  • -e el parámetro en ejecución inicializa la contraseña del usuario root

  • -d ejecuta mysql:5.7.19 en segundo plano y agrega una etiqueta al nombre de la imagen descargada

  • –character-set-server=utf8mb4: establece la codificación predeterminada del servidor MySQL en utf8mb4

  • –collation-server=utf8mb4_unicode_ci: establece la intercalación predeterminada del servidor MySQL en utf8mb4_unicode_ci

  • docker ps //Comprueba si el contenedor se inicia normalmenteInsertar descripción de la imagen aquí

  • docker update --restart=always mysql_5.7.19 //Configura el contenedor mysql-5.7.19 para que se inicie automáticamente
    Insertar descripción de la imagen aquí

8. Despliegue del paquete de guerra

  • Abra la herramienta de desarrollo, aquí está eclipse y empaquete el proyecto java que puede ejecutarse con éxito en una guerra (aquí hay un proyecto jsp)
    Insertar descripción de la imagen aquíInsertar descripción de la imagen aquí
  • En este momento podemos ver que la ruta que acabamos de seleccionar para el almacenamiento tiene un paquete de guerra adicional.
    Insertar descripción de la imagen aquí
  • Utilice la herramienta gráfica de base de datos Navicat para conectarse a la base de datos.
  • Exportar la base de datos relacionada con este proyecto.
    Insertar descripción de la imagen aquíInsertar descripción de la imagen aquí
  • Luego puedes ir a la ruta de almacenamiento y ver un archivo sql.
    Insertar descripción de la imagen aquí
  • Crear una nueva conexión de base de datos mysql
    Insertar descripción de la imagen aquí
  • Abra y cree una base de datos, cree una nueva consulta
    Insertar descripción de la imagen aquí
    ; vuelva a abrir la conexión de la base de datos y podrá ver que la base de datos se ha creado.
    Insertar descripción de la imagen aquí
  • Haga doble clic para abrir la base de datos, haga clic derecho para ejecutar el archivo SQL y busque el archivo SQL que acaba de guardar.
    Insertar descripción de la imagen aquíInsertar descripción de la imagen aquí
  • Importado exitosamente
    Insertar descripción de la imagen aquí
  • Actualiza y abre la tabla para ver los datos.
    Insertar descripción de la imagen aquí
  • En este momento, verifique si los datos existen en el contenedor mysql de Docker.
  • ejecutivo de ventana acoplable -it mysql_5.7.19 /bin/bash
  • -i -t es equivalente a -it significa insertar, ingresar; /bin/bash significa interfaz interactiva de script de shell
    Insertar descripción de la imagen aquí
  • mysql -uroot -proot // La raíz detrás de -p es la contraseña de root establecida antes
    Insertar descripción de la imagen aquí
  • mostrar bases de datos; //Mostrar todas las bases de datos
    Insertar descripción de la imagen aquí
  • Seleccionar una base de datos; mostrar todas las tablas de la base de datos actual
    Insertar descripción de la imagen aquí
  • La transferencia de datos fue exitosa, ahora comience a cargar el paquete de guerra.
  • Ingrese sz en la ventana de comando donde está conectado xshell y presione Enter para encontrar el paquete war que acaba de almacenar y transferirlo.
  • Una vez completada la transferencia, ingrese ls para ver los archivos en el directorio actual.Insertar descripción de la imagen aquí
  • El contenedor que uso aquí monta el archivo webapps de tomcat2 en el archivo host, por lo que solo necesito copiar el paquete war en la carpeta montada.
  • cp PersonManager.war tarea/tomcat/webapps/
    Insertar descripción de la imagen aquí
  • Ingrese a la carpeta montada para ver los archivos.
    Insertar descripción de la imagen aquí
  • Reinicie el contenedor Tomcat2
    -docker restart tomcat2 // Si se ha iniciado tomcat2, use reiniciar, si no, use inicio.
    Insertar descripción de la imagen aquí
  • Vaya al directorio montado para ver si la guerra ha sido analizada. Ha
    Insertar descripción de la imagen aquí
    sido analizada. Vamos al navegador y usamos ip: puerto/nombre del proyecto para acceder Insertar descripción de la imagen aquí**

!!!Algo especial a tener en cuenta aquí es que los sistemas Linux distinguen entre mayúsculas y minúsculas, pero los sistemas Windows no.

**

Inicié sesión aquí y descubrí que no podía iniciar sesión.
Insertar descripción de la imagen aquí

  • Pero mi cuenta y contraseña son correctas. Finalmente verifiqué la información, pedí consejo a los expertos y finalmente lo resolví. ¡Todos deberían prestar atención aquí! ! !
  • Busque el archivo de configuración para que su proyecto se conecte a la base de datos, use vi o vim con espacios en el nombre del archivo de configuración
    Insertar descripción de la imagen aquí
  • El localhost en el frente debe ser la IP del contenedor mysql, el puerto es el puerto 3306 del contenedor y el nombre de la base de datos en la parte posterior debe prestar atención a mayúsculas y minúsculas. Mi base de datos está en minúsculas, por lo que es necesario cambiarla. a minúsculas aquí.
  • Docker inspecciona el nombre del contenedor MySQL // Primero verifique la IP interna del contenedor MySQL
  • ventana acoplable inspecciona mysql_5.7.19
    Insertar descripción de la imagen aquí
  • La configuración correcta es
    Insertar descripción de la imagen aquí
  • docker restart tomcat2 //Reiniciar el contenedor tomcat
    Insertar descripción de la imagen aquí
  • ¡Vaya a visitar el proyecto
    Insertar descripción de la imagen aquíe inicie sesión correctamente! !

Supongo que te gusta

Origin blog.csdn.net/qq_43913213/article/details/123431625
Recomendado
Clasificación