GNU/Linux >> Linux Esercitazione >  >> Linux

Commit dati in un contenitore mysql

Sulla base della ricerca di @dekin, ho fatto questo per risolvere il problema:

Dockerfile:

FROM mysql:latest

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

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

Crea ed esegui:

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

Sulla base della risposta di @Robert, sono finito con questo 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

Il CMD override non ha funzionato per me, il contenitore si è fermato con uno strano errore:

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.

Immagino che l'originale CMD command stava facendo più cose che ora mancano (nella risposta di @Robert), quindi l'ho fatto con un approccio diverso. Non l'ho provato con latest ma penso che dovrebbe funzionare.


Se stai usando docker-compose , non è necessario creare un'immagine personalizzata. Basta aggiungere il flag --datadir=/var/lib/mysql-no-volume al tuo comando quando estrai il mysql immagine.

Esempio:

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"

L'immagine mysql ufficiale memorizza i dati in un volume. Normalmente questo è desiderato in modo che i tuoi dati possano persistere oltre la durata del tuo contenitore, ma i volumi di dati ignorano l'Union File System e non sono impegnati nell'immagine.

Puoi realizzare ciò che stai cercando di fare creando la tua immagine di base mysql senza volumi. Sarai quindi in grado di aggiungere dati e salvarli in un'immagine, ma tutti i dati aggiunti a un contenitore in esecuzione dopo il commit andranno persi quando il contenitore scompare.


Linux
  1. MySQL:conversione in dati per tabella per InnoDB

  2. Velocizzare le build di immagini del contenitore con Buildah

  3. Terraform – Distribuisci Python Lambda (immagine contenitore)

  4. Come creare un'immagine personalizzata da un contenitore Docker

  5. migliorare la velocità di importazione mysql

Tipi di dati MySQL

Come archiviare i dati del contenitore Docker nei volumi Docker

PHP MySQL Seleziona dati

Nuova funzione del contenitore:montaggi in sovrapposizione volatili

Come installare AlmaLinux 8 Image in Docker Container

Come utilizzare Docker Commit per modificare le immagini del contenitore