Resumen: recuerde el problema de la imagen de depuración de la ventana acoplable

1. Antecedentes

Un colega me pidió ayuda para implementar una aplicación en QKE y me dio la dirección del espejo y el archivo de configuración.

Como quiero asignar el archivo de configuración al contenedor, creé un mapa de configuración y luego la aplicación asigna el contenido correspondiente a la clave en el mapa de configuración al archivo de configuración en el contenedor.

Pero me encontré con un problema:

Los contenedores se reinician con frecuencia y rapidez, y no hay registros visibles.

Esto es muy problemático, porque no puedo ver la causa del error sin el registro, por lo que la máxima prioridad es encontrar una forma de obtener el registro.

Antes, imprimíamos registros en el contenedor. Después de reiniciar el contenedor, los registros desaparecieron, pero al menos el contenedor se inició durante un tiempo, por lo que puede ingresar y verlo. Pero esta vez, la aplicación se inició demasiado rápido y se bloqueó. levantarse inmediatamente, sin dar tiempo a entrar en el contenedor. .

No pensé en ninguna forma. Estaba pensando en asignar el registro del contenedor al pod. Más tarde, mi colega zy proporcionó una forma de depurar con docker: use /bin/ bash

/bin/bash proporciona un entorno de línea de comandos que puede ejecutar comandos. La ventaja es que el contenedor no se bloqueará.

La siguiente es una captura de pantalla de la operación de Zhang Yu: finalmente se resolvió mediante el comando docker run -it docker-registry.xxx.virtual/weeb/thor:v0.1 /bin/bash .

Dos, la ventana acoplable entra en el contenedor.

Estaba pensando antes, la imagen de depuración de la ventana acoplable, dado que la imagen se cuelga después del inicio, ¿no se colgará también durante la depuración?

Parece que todavía no estoy familiarizado con los comandos de la ventana acoplable.

Primero mira la ventana acoplable original.

Primero ejecutemos el comando: docker run -it docker-registry.xxx.virtual/weeb/thor:v0.1 

Se encuentra que no hay ningún archivo de configuración y se informa el siguiente error. 

¿qué hacer?

Ejecutémoslo de nuevo: docker run -it docker-registry.xxx.virtual/weeb/thor:v0.1 ls /data

La diferencia con el comando anterior es que este comando va seguido de: "ls /data", vea el efecto:

Se puede ver que se ha ejecutado el siguiente ls /data. Este es el punto, si hay un comando detrás de la imagen, docker ya no ejecutará el CMD definido en la imagen ,

El siguiente es el CMD definido en la imagen, lo que significa que el primer paso después de que se inicie el contenedor es ejecutar CMD, es decir, iniciar el servicio y especificar el archivo de configuración /data/thor/config.yaml para iniciar.

Y hay un problema con este servicio + archivo de configuración, por lo que no se inicia y el contenedor se bloquea.

Entonces, en resumen, hay dos formas de terminar un contenedor:

1. Termina la ejecución del comando;

  • La ejecución de ls /data anterior finaliza el contenedor porque se ejecuta.

2. Hay un problema con la ejecución de CMD;

Si queremos que el contenedor no se bloquee, ejecutamos /bin/bash y creamos un entorno /bin/bash. El contenedor en este entorno no se bloqueará. Podemos ingresar a este entorno y ejecutar CMD manualmente. En este momento, ejecute CMD manualmente. Simplemente inicie un proceso secundario en el contenedor, el proceso principal es /bin/bash, incluso si el proceso secundario se bloquea, siempre que el proceso principal /bin/bash no se bloquee, estará bien.

Veamos el efecto: el descubrimiento ha llegado.

 Ejecutamos el comando especificado por CMD: /usr/bin/thor -config.file /data/thor/config.yaml   

 Encontré que no hay un archivo de configuración, creamos y usamos el contenido en el caso

Al final encontré el log con éxito y vi el motivo del error, de hecho era para modificar el listen del archivo de configuración. 

Supongo que te gusta

Origin blog.csdn.net/w2009211777/article/details/131124239
Recomendado
Clasificación