¿Cuál es la forma segura de detener el contenedor mysql docker?

Ejecuto el contenedor mysql usando Docker. Lo empiezo con like

sudo docker -d --name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql mysql_image 

Sospecho que detener mysql deteniendo docker no es seguro. ¿Me equivoco?

sudo docker stop mysql

¿Es más seguro dejar de fumar dentro del recipiente primero?

sudo docker exec mysql /usr/bin/mysqladmin shutdown

parece seguro, desde el docs:

El proceso principal dentro del contenedor recibirá SIGTERM, y después de un período de gracia, SIGKILL.

entonces, si el proceso principal es mysqld, tendrá una oportunidad decente de vaciar todo.

Parece que detener el contenedor docker sin apagar MySQL dentro de un volumen de datos MySQL roto. Por lo tanto, es necesario ejecutar el apagado de MySQL antes de detener el contenedor para que MySQL descargue todos los cambios en un disco.

Este es un registro de inicio de mysql en el volumen, creado a partir del contenedor, detenido por docker. Preste atención a XA existe el paso de recuperación de bloqueo.

2021-05-18 06:34:51+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL             Server 8.0.25-1debian10 started.2021-05-18 06:34:54+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'2021-05-18 06:34:54+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.2021-05-18T06:34:54.844455Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.25) starting as process 12021-05-18T06:34:54.887402Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.2021-05-18T06:35:00.523370Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.2021-05-18T06:35:11.094092Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock2021-05-18T06:35:11.181732Z 0 [System] [MY-010229] [Server] Starting XA crash recovery...2021-05-18T06:35:11.198947Z 0 [System] [MY-010232] [Server] XA crash recovery finished.2021-05-18T06:35:11.375917Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.2021-05-18T06:35:11.376529Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.2021-05-18T06:35:11.397202Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.2021-05-18T06:35:11.628776Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.25'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

Al usar

docker exec tu-live-db /usr/bin/mysqladmin -uroot -proot shutdown

antes de eliminar un contenedor, XA crash recovery no se inicia y el volumen de datos es válido para el siguiente contenedor que se inicie con él

2021-05-18 06:36:44+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.2021-05-18 06:36:47+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'2021-05-18 06:36:47+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.25-1debian10 started.2021-05-18T06:36:48.040045Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.25) starting as process 12021-05-18T06:36:48.082740Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.2021-05-18T06:36:53.426493Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.2021-05-18T06:36:57.611953Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock2021-05-18T06:36:57.827561Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.2021-05-18T06:36:57.828060Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.2021-05-18T06:36:57.845291Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.2021-05-18T06:36:58.014550Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.25'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

puede consultar los registros desde el contenedor mysql

docker container logs mysql

para confirmar si el procedimiento de apagado es seguro o no

para ver la última línea, si se muestra:

[Nota] mysqld: Cierre completo

eso debería ser seguro