GNU/Linux >> Tutoriales Linux >  >> Linux

Confirmar datos en un contenedor mysql

Basado en la investigación de @dekin, hice esto para resolver el problema:

Dockerfile:

FROM mysql:latest

RUN cp -r /var/lib/mysql /var/lib/mysql-no-volume

CMD ["--datadir", "/var/lib/mysql-no-volume"]

Construir y ejecutar:

docker build . -t my-mysql
docker run -e MYSQL_ROOT_PASSWORD=root -it my-mysql

Basado en la respuesta de @Robert, terminé con este Dockerfile :

FROM mysql:5.6.22

RUN cp -r /var/lib/mysql /var/lib/mysql-no-volume

RUN sed -i -e "s|/var/lib/mysql|/var/lib/mysql-no-volume|" /etc/mysql/my.cnf

El CMD override no funcionó para mí, el contenedor se detuvo con un error extraño:

2019-02-21 15:18:50 1 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
2019-02-21 15:18:50 1 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

Supongo que el CMD original El comando estaba haciendo más cosas que ahora faltan (en la respuesta de @Robert), así que lo hice con un enfoque diferente. No lo probé con latest pero creo que debería funcionar.


Si está utilizando docker-compose , no es necesario crear una imagen personalizada. Simplemente agregue la bandera --datadir=/var/lib/mysql-no-volume a su comando al tirar del mysql imagen.

Ejemplo:

version: '2.4'
services:
  mysql:
    image: mysql:5.7
    command: "mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --datadir=/var/lib/mysql-no-volume"

La imagen oficial de mysql almacena datos en un volumen. Normalmente, esto se desea para que sus datos puedan persistir más allá de la vida útil de su contenedor, pero los volúmenes de datos pasan por alto el sistema de archivos de unión y no se comprometen con la imagen.

Puede lograr lo que está tratando de hacer creando su propia imagen base mysql sin volúmenes. Luego podrá agregar datos y confirmarlos en una imagen, pero cualquier dato agregado a un contenedor en ejecución después de la confirmación se perderá cuando el contenedor desaparezca.


Linux
  1. Acelerar la creación de imágenes de contenedores con Buildah

  2. Terraform:implemente Python Lambda (imagen del contenedor)

  3. Cómo confirmar cambios en una imagen de Docker

  4. ¿Qué hay dentro de una imagen/contenedor de Docker?

  5. No se pueden enviar datos de MySQL a un archivo

Tipos de datos MySQL

Cómo almacenar datos de contenedores de Docker en volúmenes de Docker

PHP MySQL Seleccionar datos

Nueva función de contenedor:monturas superpuestas volátiles

Cómo instalar la imagen de AlmaLinux 8 en Docker Container

Cómo usar Docker Commit para cambiar imágenes de contenedores