sql >> Databáze >  >> RDS >> Mysql

docker commit mysql neukládá

Zde se děje několik věcí:

Nejprve docker commit je kódová vůně. Obvykle jej používají ti, kteří vytvářejí obrázky ručním procesem, spíše než automatizují jejich sestavení pomocí souboru Dockerfile, který by umožnil snadnou rekreaci. Pokud je to jen trochu možné, doporučuji vám pro vytvoření obrázku přejít na soubor Dockerfile.

Dále docker commit nezaznamená změny provedené ve svazku. Ke stejnému problému dochází, pokud se pokusíte aktualizovat svazek pomocí RUN krok v Dockerfile. Oba tyto zachycují změny v souborovém systému kontejneru a ukládají tyto změny jako vrstvu v obrazu dockeru a svazky nejsou součástí souborového systému kontejneru. To je také viditelné, pokud spustíte docker diff proti kontejneru. V tomto případě upstream image definoval svazek ve svém Dockerfile:

VOLUME /var/lib/mysql

A docker nemá příkaz k vrácení vytvořeného svazku z Dockerfile. Budete muset buď přímo upravit definici obrázku z vnějšku dockeru (nedoporučuje se), nebo vytvořit svůj vlastní upstream image s odstraněným tímto krokem (doporučeno).

Obrázek mysql poskytuje možnost vložit vlastní skripty pro vytváření databáze do /docker-entrypoint-initdb.d , který můžete přidat s vlastním obrazem, který rozšiřuje mysql, nebo připojit jako svazek. Zde byste vložili své schéma nebo inicializovali ze známé zálohy pro vývoj.

A konečně, pokud je cílem mít stálost, měli byste svá data ukládat do svazku, nikoli zasílat kontejnery:

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

Svazek vám umožňuje znovu vytvořit kontejner, upgradovat na novější verzi mysql, když jsou vydány opravy (např. opravy zabezpečení), aniž byste přišli o svá data.

Pro zálohování svazku se toto exportuje do tgz:

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

Chcete-li obnovit svazek, vytvoří se svazek z tgz:

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



  1. Vkládání nových sloupců doprostřed tabulky?

  2. Chyba proměnné DECLARE v proceduře MySql

  3. CREATE TABLE IF NOT EXISTS ekvivalent v SQL Server

  4. Získání chyby pomocí funkce mysqli_escape_string