Voor we gaan beginnen met containers te starten/stoppen en images te pullen gaan we kijken op Docker-hub wat de laatste stabiele versie is van MariaDB en welke we gaan gebruiken voor deze opdracht.
Op DockerHub zien we dat de versie 10.5.10 de stabiele geteste versie en dat 10.6 een Alpha versie is. We gebruiken in deze demo de latest tag en zullen daarmee 10.5.10 gebruiken.
Op de Docker-server gaan we zoeken naar MariaDB.
docker search mariadb
Daar zien we de volgende output:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mariadb MariaDB Server is a high performing open sou… 4102 [OK]
Hiermee zie je dat er veel verschillende versies zijn, wij gebruiken de mariadb.
Je kunt de image met de volgende opdracht naar je toe halen.
docker pull mariadb
De image staat nu lokaal op je server.
docker images
Je ziet nu welke images er lokaal staan.
We gaan de container eerst lokaal starten, we zetten nog geen poorten open, daarmee zorg je ervoor dat je zelf de container beschikbaar hebt, maar van buiten er niemand bij kan.
Met de volgende opdracht start je de container.
docker run --name mariadbdemo -e MYSQL_ROOT_PASSWORD=password -d mariadb
De database container is hiermee gestart en kun je vinden onder docker-processes.
docker ps
Om het log bestand van je MariaBD container te zien kun je de volgende opdracht gebruiken.
docker logs mariadbdemo
Er draait nu nog geen database. Je kunt op 2 manieren inloggen, via de container of via mysql-client. Bij mysql-client moet je het IP-adres weten van de container, die Docker op de achtergrond aan deze container heeft gegeven. We gaan beide methodes demonstreren.
Een shell krijgen in je container.
docker exec -it mariadbdemo /bin/bash
Je ziet dat je nu al root in je container zit, nu kun je inloggen op mysql.
mysql -u root -p
Je zit na het invoeren van je wachtwoord op de MySQL-server dat draait in een container.
Hiervoor moeten we op de server mysql-client installeren. Dat doe je met de volgende opdrachten.
sudo apt update sudo apt install mysql-client -y
Hiermee wordt mysql-client geïnstalleerd.
Het enige wat mysql-client nodig heeft is een adres waar hij verbinding mee kan maken, hier zie je het verschil tussen MySQL lokaal draaien als service en in een containet draaien. Omdat mysql-client lokaal is geïnstalleerd kunnen we hem benaderen via het IP-adres dat Docker aan de container heeft gegeven. Remote kan (nog) niet.
Het vinden van het IP-adres van de container.
docker inspect mariadbdemo | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
Verbinding maken met de MariaDB container.
mysql -u root -p -h 172.17.0.2
na het invullen van je wachtwoord zie je dat je nu gelijk in de MariaDB database zit.