Reinicio de servidores de JVM dentro de contenedores

En función de cómo se estén ejecutando sus contenedores (localmente o a través de una herramienta de orquestación gestionada), es necesario comprender cómo reiniciar aplicaciones, como WebSphere Application Server o el servidor Liberty.

Cada contenedor Docker en ejecución normalmente ejecuta solo un proceso en primer plano. Cuando el proceso finaliza, el contenedor se detiene. A continuación se muestra un ejemplo de los procesos que se ejecutan en el Transaction server Docker container
[root@txn /]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  15068  3060 ?        Ss   17:14   0:00 /bin/bash /SETUP/bin/entrypoint.sh
root       173  0.0  0.0  15200  3328 ?        Ss   17:14   0:00 bash
root       214 95.7  6.9 3445684 1146952 ?     Sl   17:15   2:15 /opt/WebSphere/AppServer/java/8.0/bin/java -Dosgi.install.area=/opt/WebSphere/AppServer -Dosgi.configuration.area=/opt/We
root       290  0.0  0.0   7756   740 ?        S    17:15   0:00 tail -F /opt/WebSphere/AppServer/profiles/default/logs/server1/trace.log --pid 214 -n +0
root       430  0.0  0.0  50876  3684 ?        R+   17:18   0:00 ps aux
El pid=1 ejecuta /SETUP/bin/entrypoint.sh puesto que WebSphere Application Server no puede ser un proceso en primer plano. En algunos escenarios, después de configurar los valores o aplicar cualquier cambio, puede que sea necesario reiniciar WebSphere Application Server, mismo que se ejecuta dentro del Transaction server Docker container, o los servidores Liberty que se ejecutan dentro de los contenedores Docker de búsqueda, tienda y personalización. Para reiniciar WebSphere Application Server o el servidor Liberty, no puede utilizar scripts stop/start tradicionales. Es necesario reiniciar todo el contenedor. Por ejemplo,
docker restart <container_name>
O, si utiliza Docker Compose,
docker-compose restart <service>
Es un enfoque válido para el entorno de Docker local donde las imágenes Docker no se eliminan el sistema. Puede reiniciar los contenedores y no perder datos ni configuraciones.

Sin embargo, al implementar herramientas de orquestación Docker avanzadas (como Marathon o Kubernetes), el contenedor y sus configuraciones se pierden cuando se recopila un contenedor de basura (junto con sus configuraciones). Las herramientas de orquestación implementan nuevos contenedores desde la imagen base. Por lo tanto, para asegurarse de que no pierde las configuraciones o personalizaciones, se recomienda crear nuevas imágenes Docker base para incluir los cambios. Para obtener más información, consulte Creación de una imagen de Docker personalizada a partir de un paquete desplegable.