Mysql
 sql >> Baza danych >  >> RDS >> Mysql

docker commit mysql nie zapisuje

Dzieje się tu kilka rzeczy:

Najpierw docker commit to zapach kodu. Zwykle jest używany przez tych, którzy tworzą obrazy w procesie ręcznym, zamiast automatyzować ich kompilacje za pomocą pliku Dockerfile, który umożliwiłby łatwe odtworzenie. Jeśli to w ogóle możliwe, polecam przejście do pliku Docker w celu stworzenia obrazu.

Następnie docker commit nie przechwyci zmian wprowadzonych w woluminie. Ten sam problem występuje, gdy próbujesz zaktualizować wolumin za pomocą RUN krok w pliku Dockerfile. Oba te przechwytują zmiany w systemie plików kontenera i przechowują te zmiany jako warstwę w obrazie Docker, a woluminy nie są częścią systemu plików kontenera. Jest to również widoczne po uruchomieniu docker diff o pojemnik. W tym przypadku obraz nadrzędny zdefiniował głośność w swoim pliku Docker:

VOLUME /var/lib/mysql

A docker nie ma polecenia cofnięcia utworzonego woluminu z pliku Dockerfile. Musisz albo bezpośrednio zmodyfikować definicję obrazu spoza dockera (niezalecane) albo zbudować własny obraz nadrzędny z usuniętym tym krokiem (zalecane).

To, co zapewnia obraz mysql, to możliwość wstrzykiwania własnych skryptów do tworzenia bazy danych w /docker-entrypoint-initdb.d , który możesz dodać z własnym obrazem rozszerzającym mysql lub zamontować jako wolumin. W tym miejscu możesz wstrzyknąć swój schemat lub zainicjować ze znanej kopii zapasowej w celu rozwoju.

Wreszcie, jeśli celem jest trwałość, należy przechowywać dane w woluminie, a nie przez zatwierdzanie kontenerów:

docker run -v mysql-data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

Wolumin pozwala na odtworzenie kontenera, uaktualnienie do nowszej wersji mysql po wydaniu łatek (np. poprawek bezpieczeństwa) bez utraty danych.

Aby wykonać kopię zapasową woluminu, zostanie on wyeksportowany do tgz:

docker run --rm -v mysql-data:/source busybox tar -cC /source . >backup.tgz

Aby przywrócić wolumin, tworzymy go z tgz:

docker run --rm -i -v mysql-data:/target busybox tar -xC /target <backup.tgz



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP:brak pliku php.ini

  2. Jak oszacować czas zapytania SQL?

  3. Nie mogę uruchomić serwera MySQL z wiersza poleceń w systemie Windows

  4. jak posortować kolejność LEFT JOIN w zapytaniu SQL?

  5. Rozmiar pola MySql do przechowywania treści wiadomości e-mail