Tato příručka vysvětluje krok za krokem, jak během několika minut nastavit nový server MySQL spuštěný v kontejneru Docker.
Jednou ze skvělých věcí na Dockeru je, že jej můžete rychle použít k vyzkoušení aplikací, aniž byste jej museli instalovat přímo do počítače. Docker můžete například použít ke spuštění databáze v kontejneru jako vzdáleného serveru a otestovat, jak s ní vaše aplikace spolupracuje.
Spouštění MySQL s kontejnery Docker je široce používaný mechanismus. MySQL je jednou z nejpopulárnějších databází používaných s kontejnery Docker.
Pro vytvoření MySQL jako kontejneru Docker by měl mít hostitelský počítač nainstalovaný Docker. Pokud jej nemáte nainstalovaný, zde je podrobný průvodce instalací Dockeru v Ubuntu.
1. Vytáhněte MySQL Docker Image
První věc, kterou musíte udělat, abyste vytvořili a otestovali server MySQL v Dockeru, je stáhnout oficiální obrázek MySQL z centra Docker Hub.
Můžete si stáhnout konkrétní verzi, například 8.0, 5.7, 5.6, nebo se rozhodnout pro nejnovější verzi, jak je vidět v následujícím příkazu:
sudo docker pull mysql:latest
Pokud chcete konkrétní verzi MySQL, nahraďte latest
s číslem verze.
Můžete spustit docker images
zobrazíte seznam obrázků Docker, které jste stáhli z centra Docker.
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 2fe463762680 13 hours ago 514MB
Jak můžete vidět, obraz MySQL je nyní dostupný pro náš lokálně nainstalovaný Docker.
2. Nastavení hlasitosti dockeru
Jak víte, kontejnery Docker jsou v zásadě dočasné a očekává se, že v případě odstranění kontejneru budou ztracena veškerá data nebo konfigurace.
Svazky Docker však poskytují mechanismus pro zachování dat vytvořených v kontejneru Docker. Jsou proto preferovaným mechanismem Dockeru pro ukládání trvalých dat kontejnerů Docker.
MySQL ukládá své datové soubory v /var/lib/mysql
adresář. Před nasazením tedy budete muset nastavit svazek Docker, aby vaše databáze zůstala zachována. V opačném případě budou vaše data po restartování kontejneru ztracena.
Vytvoříme nový svazek a pojmenujeme ho mysql-data
. Bude použit k uložení všech informací o vaší databázi.
sudo docker volume create mysql-data
Všechny svazky, které Docker zná, můžete zobrazit zadáním příkazu níže:
sudo docker volume ls
DRIVER VOLUME NAME
local mysql-data
Jak můžete vidět, náš nově vytvořený svazek Docker s názvem mysql-data
je zde a je připraven poskytovat data. Poté jej lze připojit k čerstvě natočenému kontejneru MySQL.
3. Spusťte MySQL Docker Container
Nyní, když máte na svém počítači obraz MySQL Docker a svazek pro uložení dat, můžete nasadit kontejner. Musíte také nastavit heslo pro uživatele root MySQL pomocí MYSQL_ROOT_PASSWORD
proměnná prostředí.
Nyní spustíme kontejner:
sudo docker run -d --name=mysql-server -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your_password mysql
A je to. Tím se spustí nejnovější verze instance MySQL, která může být vzdáleně přístupná odkudkoli se zadaným heslem root.
Aby byly věci transparentnější, pojďme tuto syntaxi rozebrat. Za prvé, zde je význam jednotlivých parametrů v tomto příkazu:
-d
spustí tento kontejner v odděleném režimu, takže běží na pozadí.--name
přiřadí názevmysql-server
do vaší instance kontejneru. Pokud toto nezadáte, Docker vygeneruje náhodný název.-p
sváže kontejnerový port MySQL3306
na stejný port na vašem hostitelském počítači. Budete se moci připojit k127.0.0.1
na portu3306
pomocí klientů MySQL (mysql
) běžící na vašem hostiteli.-v
možnost svázat tuto datovou složku uvnitř svazku kontejneru (/var/lib/mysql
) na místní svazek Docker (mysql-data
), který jste vytvořili v předchozím kroku.-e
nastavuje proměnnou prostředí. V tomto případě kořenové heslo MySQL.mysql
je název obrázku, který používáme k vytvoření kontejneru.
Zda kontejner běží, můžete zkontrolovat vypsáním spuštěných kontejnerů:
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fc229e3df77 mysql "docker-entrypoint.s…" 37 minutes ago Up 34 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql-server
4. Připojování ke kontejneru MySQL
Interaktivní shell MySQL můžete získat připojením ke kontejneru a spuštěním mysql
příkaz. To poskytuje plné rozhraní příkazového řádku MySQL pro použití všech známých příkazů a příznaků.
sudo docker exec -it mysql-server mysql -u root -p
Můžete se také připojit k instanci MySQL Docker pomocí mysql
klient, pokud jej máte na svém hostiteli předinstalovaný.
Pozor, klient mysql se ve výchozím nastavení pokouší připojit pomocí UNIX socketu, když mu řeknete, aby se připojil k localhost
. Použijte tedy 127.0.0.1
a nikoli localhost
.
mysql -u root -h 127.0.0.1 -p
Pro připojení k databázi můžete samozřejmě také použít klienta založeného na GUI, jako je MySQL Workbench. Například v MySQL Workbench pro „Hostname“ zadejte IP adresu počítače, na kterém jste spustili Docker Container.
Samozřejmě ve výše uvedených příkladech pro název hostitele můžete místo 127.0.0.1 použít IP adresu počítače, na kterém pracuje kontejner MySQL docker.
Tuto adresu můžete najít spuštěním ifconfig
příkaz bez jakýchkoli argumentů.
Použití adresy IP počítače vám umožňuje vzdálený přístup k serveru MySQL.
5. Zastavit, spustit a restartovat kontejner MySQL
Tento příkaz se dočasně zastaví běžící kontejner MySQL (a lze jej obnovit/restartovat později):
sudo docker stop mysql-server
Chcete-li začít kontejneru MySQL, spusťte:
sudo docker start mysql-server
Níže uvedený příkaz slouží k restartování běžící kontejner MySQL:
sudo docker restart mysql-server
Závěr
Jak můžete vidět, spuštění MySQL v rámci Dockeru je mnohem rychlejší a jednodušší než místní instalace MySQL Serveru. Existuje však mnoho dalších věcí, které je třeba zvážit, pokud budete používat MySQL na Dockeru pro něco jiného než testování.
Další informace najdete na stránce MySQL na Docker Hub a v oficiální příručce MySQL na toto téma.
Pokud máte nějaké dotazy nebo návrhy, dejte nám vědět. Rád se s vámi spojím.