GNU/Linux >> Znalost Linux >  >> Cent OS

Jak vytvořit MySQL Docker Container pro testování

Docker je kontejnerové běhové prostředí, které umožňuje programům pracovat v uvězněném prostředí bez jakýchkoli požadovaných externích závislostí. Kontejnery jsou v některých konceptech podobné virtuálním strojům, ale nepoužívají hypervizor a běží v jedné instanci jádra, často sdílejí instanci s jinými kontejnery. Jedním z hlavních rysů kontejnerizace je absence externích závislostí; kontejner má všechny runtime knihovny a komponenty potřebné ke spuštění aplikace.

Oracle poskytuje obrazy kontejnerů Docker od MySQL 5.5.40, a proto je Docker vynikající volbou pro provádění testování napříč různými verzemi a vydáními MySQL. Často je žádoucí provést regresní testování chyby, aby se zjistilo, jaké vydání(a) chyba ovlivňuje, nebo aby se kvantifikovalo, jak se chování změnilo mezi vydáními.

Docker umožňuje poměrně lehké spouštění instancí MySQL s funkcí automatického čištění po dokončení testování. V tomto příspěvku předvedu některé způsoby, jak můžete použít Docker ke spuštění MySQL a použít jej k testování.

Než budete moci používat Docker, musí být nainstalován na vašem testovacím počítači. Pokud nemáte přímý přístup k systému Linux, doporučuji vám získat VirtualBox a vytvořit virtuální stroj Linux pro spouštění obrazů Docker, některé dobré volby pro OS by byly CentOS 7 nebo Fedora (nejnovější). Fedora může být považována za upstream k podnikovým variantám Linuxu, a proto bude mít zaručenou nejnovější podporu pro technologie.

Instalace

1. Na systémech, které mají YUM nebo DNF a mají přístup k úložištím operačního systému, můžete nainstalovat docker pomocí tohoto příkazu:

# yum install docker docker-common

Po provedení tohoto příkazu byste měli být vyzváni YUM k instalaci dockeru a všech nezbytných závislostí.

2. Chcete-li používat Docker, musíte službu dále spustit:

# service docker start

V distribucích CentOS/RHEL 7 použijte systemctl:

# systemct start docker

3. Pokud chcete, aby byl Docker dostupný po každém restartu, povolte jej tímto příkazem:

# chkconfig docker on

V distribucích CentOS/RHEL 7 použijte systemctl:

# systemct enable docker

Jak Docker funguje

Docker je sám o sobě pouze správcem kontejnerů, k efektivnímu využívání Dockeru musíte mít přístup k docker.io, webu, kde jsou publikovány obrázky kontejnerů Docker a lze je stáhnout. Kontejnery Docker na docker.io obsahují bitovou kopii binárních souborů MySQL a informace o závislostech, aby služba Docker mohla stáhnout příslušné runtime soubory a virtuální souborový systém, ve kterém bude kontejner Docker spuštěn.

Když vytvoříte instanci kontejneru Docker, alokuje virtuální souborový systém pro kontejner, který je trvalý napříč běhy (pokud nepoužijete –rm přepínač). Kontejnery Docker můžete libovolně spouštět a zastavovat a po restartu zůstanou trvalé. Jednou z funkcí Dockeru, díky které je zvláště užitečný pro testovací instance, je schopnost kontejneru po zastavení vymazat. Pokud spustíte kontejner Docker s volbou –rm, při vypnutí kontejneru se také odstraní ze systému souborů a pomůže odstranit cruft.

Vytváření a spouštění kontejnerů

Zde je nejjednodušší příkaz pro spuštění nejnovější verze MySQL v kontejneru a její odstranění po vypnutí:

# docker run --rm --name=mysql8 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server:latest

Zde je dekódování tohoto příkazu:

  • docker – docker je název spustitelného souboru používaný k provádění všech funkcí dockeru.
  • spustit – toto je příkaz zadaný dockeru, instruuje docker, aby vytvořil nový kontejner a spustil jej.
  • –rm – to dockeru dá pokyn, aby po zastavení odstranil soubory kontejneru.
  • –name=mysql8 – to říká dockeru, aby pojmenoval kontejner „mysql8“ pro všechny budoucí odkazy na příkazy. Tento název je libovolný, ale měl by být popisný, aby nedošlo ke střetu s více instancemi kontejneru.
  • -e MYSQL_ALLOW_EMPTY_PASSWORD – toto předá možnost kontejneru během fáze vytváření, čímž kontejneru řekne, aby během procesu vytváření přiřadil prázdné heslo root.
  • -d mysql/mysql-server:latest – toto sdělí dockeru úložiště a verzi ke stažení z docker.io při vytváření kontejneru. Slovo „nejnovější“ je magická verze, která říká dockeru, aby si stáhl nejnovější verzi všech vydání MySQL, můžete také zadat přesná čísla verzí.

Některými z užitečných změn výše uvedeného příkazu může být určení verze MySQL nebo přidělení jedinečného názvu. Zde je příklad, kde je specifikováno MySQL 8.0.13 a je použit podobně jedinečný název:

# docker run --rm --name=mysql8013 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server:8.0.13

Tímto způsobem můžete dokonce vytáhnout instance MySQL 5.5:

docker run --rm --name=mysql55 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server:5.5
Poznámka :Výše ​​uvedené příklady ZÁMĚRNĚ ignorují veškeré zabezpečení z důvodu účelnosti a pohodlí. NEPOUŽÍVEJTE ani nereplikujte tyto konfigurace v produkčním prostředí, NEJSOU bezpečné!

Použití instance Docker

Dosud jsme diskutovali pouze o spuštění instance Docker, ale bez přístupu klientského programu to není příliš užitečné. Vytváření připojení pomocí standardních klientských programů MySQL je poměrně jednoduché, protože používají místní soketová připojení a připojují se přes localhost. Pokud se chcete připojit pomocí síťové IP adresy, jako je například MySQL Workbench, je to trochu složitější.

Zde je příklad místního připojení mysql CLI:

# docker exec -it mysql8 mysql -uroot

Pojďme si ten příkaz rozebrat:

  • exec – řekne dockeru, aby provedl příkaz uvnitř instance kontejneru docker.
  • -it – řekne dockeru, aby vytvořil interaktivní relaci s pseudo-tty.
  • mysql8 – sděluje dockeru, že příkaz bude proveden v instanci kontejneru s názvem „mysql8“.
  • mysql -uroot – toto je skutečný příkazový řádek raw shellu, který docker spouští uvnitř instance kontejneru.

Kontejnery MySQL Docker obsahují obslužné programy příkazového řádku MySQL, jako je mysql, mysqlpump, mysqldump atd. Pokud chcete data přenášet do jednoho z nástrojů příkazového řádku, jako je načítání výpisu, budete muset odstranit - t z příkazového řádku takto:

# docker exec -i mysql8 mysql -uroot < dumpfile.sql

Přístup TCP/IP ke kontejnerům Docker

Pomocí výše uvedených příkladů příkazů Docker přiřadí nesměrovatelné soukromé IP adresy kontejnerům a vytvoří virtuální síťové rozhraní ve vašem systému. Virtuální rozhraní a kontejner tvoří koncové body pro vytváření připojení TCP/IP ke službě běžící v kontejneru.

Chcete-li zjistit IP adresu vašeho virtuálního síťového rozhraní na vašem počítači se systémem Linux, spusťte tento příkaz:

shell> ip addr show docker0

8: docker0:  mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:f7:98:c4:d1 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:f7ff:fe98:c4d1/64 scope link
valid_lft forever preferred_lft forever

Ve výše uvedeném příkladu můžete vidět, že IP adresa přiřazená mému virtuálnímu rozhraní Docker je 172.17.0.1, což je koncový bod, ze kterého se vaše klientská aplikace připojí; toto je IP adresa, kterou použijete k vytvoření uživatele v MySQL.

Chcete-li zjistit IP adresu přiřazenou k vaší instanci kontejneru, spusťte tento příkaz a v příkladu nahraďte „mysql“ názvem vaší instance:

shell> docker inspect mysql8 | grep IPAddress

"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",

Ve výše uvedeném výstupu je IP adresa instance kontejneru 172.17.0.2, takže koncové body 172.17.0.1 <-> 172.17.0.2. Dále musíme vytvořit uživatele, pod kterým se klientský program připojí, jinak dostanete zamítnutí, protože 172.17.0.1 není povoleným hostitelem.

shell> docker exec -it mysql8 mysql -uroot

mysql> create user [email protected] identified by '';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to [email protected] with grant option;
Query OK, 0 rows affected (0.01 sec)

Jakmile vytvoříte síťového uživatele, můžete se připojit k instanci kontejneru jako root bez hesla. Síť 172.17.0.0/16 je nesměrovatelná soukromá síť, ke které nelze přistupovat z vnějšku vašeho počítače, takže nehrozí, že by se k vašemu kontejneru dockeru někdo dostal zvenčí.

Vypnutí a vyčištění

Po dokončení testování budete muset instanci Dockeru vypnout a vyčistit soubory, pokud jste při spouštění nepoužili --rm.

Vypnutí instance Docker:

# docker stop mysql8

Odebrání instance:

# docker rm mysql8

Závěr

Doufám, že jsem ilustroval užitečnost kontejnerů Docker pro testování a použití sandboxu. Docker má potenciál změnit váš pracovní postup a učinit regresní testování rychlým, snadným a pohodlným. Centrum Docker obsahuje obrázky pro verzi 5.5.40 a novější.


Cent OS
  1. Jak spustit MySQL v Docker Container:Jednoduchý a snadno sledovatelný průvodce

  2. Jak spustit MySQL v kontejneru Docker

  3. Jak SSH do kontejneru Docker

  1. Jak opustit kontejner Docker

  2. Jak vytvořit vlastní obrázek z kontejneru Docker

  3. Jak vytvořit místní úložiště Yum pro balíčky MySQL Enterprise

  1. Jak vytvářet, zobrazovat a mazat kontejnery Docker v systému Linux

  2. Jak vytvořit databázi MySQL v cPanel

  3. Jak zadat název hostitele pro běžící kontejner?