Running MongoDB in a Docker Container
MongoDB is of the most popular databases. It is cross-platform ,easily scalable and gives high performance. It is NoSQL database and works on the concept of collection and document.
Collection- Collection in MongoDB is a group of MongoDB Documents. (Equivalent to Table of SQL databases).
Document- It is a set of key-value pair. It does not depend on a schema , it is dynamic.
Docker is a container management service which makes it easier for the people across the team to work harmoniously and within the similar environment keeping everyone on the same page. A Docker container can be thought of as a single unit containing an application and all of the necessary configuration and dependency.
Now , MongoDB can be directly installed on your local machine or it can be installed in a container on the docker.
First of all we need to install Docker. Here I am doing it on windows.
Download Docker for windows from official website.
Install it and you may be prompted to install WSL2 . Download WSL2 from here.
To check if docker is properly installed type docker — version in cmd.
Now to run MongoDB in a container we need to pull MongoDB image from docker hub.
But first of all we need to create a volume so that data is persistent even after the container stops. To create volume -
First of all go into the directory where you want to store the data and run the command (Can change the name of the data volume -here I have used mongodata).
docker volume create --name=mongodata
Next we pull the MongoDB image from Docker Hub by using
docker run --name mongodb -v mongodata:/data/db -d -p 27017:27017 mongo
As default MongoDB port is 27017 so we have mapped our port 27017 to the MongoDB image’s port 27017.
To check the status of the image
docker ps -a
Container id of my mongo container starts from 0f0c…
So to execute the MongoDB container we write
docker exec -it 0f0 bash //replace 0f0 with your container id initials.
To check that we have successfully installed Mongo image we type mongo in the shell.
Thanks for reading. Hope it was helpful.