Docker – MongoDB Container mit Docker erstellen
Einleitung
Als Entwickler steht man irgendwann vor der Frage ob man sich eine Software installiert oder nicht. Ich persönlich finde die Zeiten wo man sich Software auf sein Rechner installiert sind vorbei. Bestes Beispiel hierfür sind Datenbanken. Je nach Projekt und Kunde kann es sein, dass man unterschiedliche Datenbanken installieren muss. Nach dem Projekt wird dann bleibt dann die Datenbank entweder installiert oder wird deinstalliert.
Viel eleganter ist es mit Docker sich je nach Projekt einen Container zu starten der die Datenbank als Image startet. Das hat natürlich den Vorteil, dass man nicht die komplette Datenbank installieren muss und dass man später auf Produktion ebenfalls auf das selbe Image zugreifen kann.
In diesem Tutorial möchte ich euch zeigen wie man MongDB unter Docker Container startet und wieder stoppt. Dieses Tutorial kann auch für MySQL und MariaDB verwendet werden.
Voraussetzung
- Existierende Docker 8 Installation
- Linux Kenntnisse
Docker Container mit MongoDB erstellen
Docker ist eine Plattform bzw eine Software mit es möglich ist Images als Container zu starten. Images sind fertige Umgebungen die man nutzen kann ohne große Anpassungen vornehmen zu müssen. Der Hauptvorteil von Images ist es, dass diese immer in der gleichen Umgebung laufen. Dadurch kann sichergestellt werden, dass Software die auf einem Image in der Entwicklung läuft auch später in der Produktion läuft.
Um nun mongodb als Image zu nutzen müssen wir erst einmal auf der Docker Hub seite nach einem passenden Image suchen.
In der Suchleiste kann man nun nach Images suchen. Hier geben wir jetzt mongodb ein und erhalten eine Liste von Ergebnissen. Nun stellt man sich die Frage welches Image man verwenden soll. Hier ist jedem selber überlassen welches er verwenden möchte. Ich persönlich bevorzuge das offizielle Image von mongoDB.
Wie wir an dem oberen Bild sehen können, lautet der Name des Images „mongo“. Diese Information ist für uns ausreichend um jetzt mit einem einzigen Befehl eine die mongodb lokal als Container zu starten.
Hierfür gibt ihr folgenden Befehl in der Console ein.
docker run -p 27017:27017 --name some-mongo -d mongo
Nach dem die Zeile in der Console ausgeführt wurde fängt Docker an das Image erste einmal herunterzuladen. Dies kann je nach Internetgeschwindigkeit dauern.
Nach dem das Image heruntergeladen und gestartet wurde erscheint eine ID. Dies ist die ID des Containers.
Das der Container ordnungsgemäß gestartet ist können wir prüfen in dem wir folgenden Befehl auf der Console ausführen: docker ps
Wir sehen in der Ausgabe der Console, dass unser Docker Container gestartet ist. Er ist jetzt Bereit auf dem lokalen Port 27017 Anfragen anzunehmen.
Um den Container zu stoppen reicht ebenfalls ein Befehl. Mit dem folgenden Befehl stoppt ihr den Docker Container.
docker stop mein-mongo
Solltet ihr nun versuchen den Docker Container nochmals zu starten, werdet ihr eine Fehlermeldung erhalten. Folgende Fehlermeldung erscheint dann in der Console
etoker@etoker-XPS:~$ docker run -p 27017:27017 --name mein-mongo -d mongo docker: Error response from daemon: Conflict. The container name "/mein-mongo" is already in use by container "0ffa16796e55c4348c2337af538cae54683fc1cea472bf531ff6236d18784f4c". You have to remove (or rename) that container to be able to reuse that name. See 'docker run --help'. etoker@etoker-XPS:~$
Dieser Fehler entsteht nur weil man dem Container einen Namen vergeben hat. Es kann nur einen Docker Container geben mit einem eindeutigen Namen. Um diesen Fehler zu umgehen kann man nun folgendes machen:
- Docker Container löschen mit docker rm <container_id>
- Docker Container mit einem anderen Namen starten
- Oder Docker Compose verwenden!
Wie man das Ganze dann mit Docker Compose einfacher verwaltet werde ich euch dann in meinem nächsten Tutorial MongoDb mit Docker-Compose zeigen.
Ergebnis
Ich hoffe euch hat mein kleines Tutorial gefallen. Solltet ihr Fragen, Kritik und Anregungen haben, dann postet diese als Kommentar Bitte.