Mysql
 sql >> база данни >  >> RDS >> Mysql

docker commit mysql не записва

Тук се случват няколко неща:

Първо, docker commit е кодова миризма. Склонно е да се използва от тези, които създават изображения с ръчен процес, вместо да автоматизират своите компилации с Dockerfile, който би позволил лесно отдих. Ако е възможно, препоръчвам ви да преминете към Dockerfile за създаване на изображение.

След това a docker commit няма да улови промените, направени в том. И същият проблем възниква, ако се опитате да актуализирате том с RUN стъпка в Dockerfile. И двете улавят промените във файловата система на контейнера и съхраняват тези промени като слой в изображението на docker, а томовете не са част от файловата система на контейнера. Това също се вижда, ако стартирате docker diff срещу контейнер. В този случай изображението нагоре по веригата е дефинирало обема в техния Dockerfile:

VOLUME /var/lib/mysql

И docker няма команда за отмяна на създаден том от Dockerfile. Ще трябва или директно да промените дефиницията на изображението извън Docker (не се препоръчва), или да създадете свое собствено изображение нагоре по веригата с премахната тази стъпка (препоръчително).

Това, което предоставя изображението на mysql, е възможността да инжектирате свои собствени скриптове за създаване на база данни в /docker-entrypoint-initdb.d , който можете да добавите със свое собствено изображение, което разширява mysql, или да монтирате като том. Тук трябва да инжектирате вашата схема или да инициализирате от известен архив за разработка.

И накрая, ако целта е да имате постоянство, трябва да съхранявате данните си в том, а не чрез зареждане на контейнери:

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

Обемът ви позволява да пресъздадете контейнера, да надстроите до по-нова версия на mysql, когато бъдат пуснати пачове (например корекции на сигурността), без да губите данните си.

За да архивирате тома, това ще експортира в tgz:

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

И за да възстановите том, това създава такъв от 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. Как да вмъкна дата в mysql като параметър?

  2. Кой DATATYPE е по-добре да се използва TEXT или VARCHAR?

  3. Пребройте редовете в MySQL заедно с действителното съдържание на редовете

  4. PHP/MySQL Вмъкване на нулеви стойности

  5. Приоритет на оператора И и ИЛИ в заявката за избор на Mysql