How to deploy mongodb 4 container inside ubuntu vps server
How to deploy mongodb 4 container inside ubuntu vps server

This article provides a guide for how to deploy MongoDB 4 Container inside Ubuntu VPS server.

MongoDB is a powerful NoSQL database that offers flexibility, scalability, and high performance. Deploying MongoDB on a Docker container within an Ubuntu Virtual Private Server (VPS) can further enhance these benefits by providing a portable, consistent, and isolated environment for development and production.

This guide will explore the benefits of using Docker, provide a detailed walkthrough of the installation process, and discuss the configuration of MongoDB to ensure an efficient and secure deployment.

Prerequisites

Before we begin, you’ll need:

  • Ubuntu VPS
  • Ubuntu 22.04 LTS
  • 2GB of RAM (minimum)
  • 20GB Disk (minimum)
  • Root access (or a user with sudo privileges)

Take a moment to confirm your environment meets the above prerequisites before continuing.

Also, you’ll need a basic understanding of the Linux command line and some familiarity with Docker concepts.

This guide assumes we are starting from a fresh, Ubuntu 22.04 LTS installation.

Launch and Prepare Ubuntu VPS Server

First, lets launch the VPS and prepare it for the required software installations in later steps.

  1. Launch an Ubuntu VPS
  2. SSH the the server as root user.
  3. Ensure your system is up-to-date with the latest security patches by running:
sudo apt update && sudo apt upgrade -y

 

Installing Docker on Ubuntu

Now, let’s install Docker on your Ubuntu VPS. Docker allows you to create, deploy, and manage virtualized application containers on a common operating system, providing a lightweight alternative to traditional virtual machines. Follow these steps:

  1. Update your package index:
    sudo apt-get update
    
  2. Install required packages:
    Ensure that your system can use repositories over HTTPS:
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
    
  3. Add Docker’s official GPG key:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
  4. Set up the stable repository:
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
  5. Install Docker CE:
    sudo apt-get update && 
    sudo apt-get install docker-ce
    
  6. Verify that Docker is installed correctly by running the hello-world image:
    sudo docker run hello-world
    

To allow non-root users to manage Docker containers, add your user to the Docker group:

sudo usermod -aG docker ${USER}

Log out and back in to activate this change.

Setting Up MongoDB Docker Container

Now, let’s set up your MongoDB Docker container. We will pull the MongoDB image, run the container, and configure basic settings.

  1. Pulling the MongoDB Image:
    Retrieve the official MongoDB image from Docker Hub:
    docker pull mongo:4.0
    
  2. Running the MongoDB Container:
    To start a MongoDB container with the default settings:
    docker run --name mymongo -d mongo:4.0
    

    This command runs a container named mymongo in detached mode using the MongoDB 4.0 image.

  3. Configuring MongoDB:
    To ensure data persists across container restarts, set up a Docker volume:
    docker stop mymongo
    docker rm mymongo
    docker run --name mymongo -v mongodb_data:/data/db -d mongo:4.0
    

    This command attaches a volume named mongodb_data to the container.

Data Management

Managing data effectively is crucial for any database system. Here’s how you can manage your MongoDB data within Docker:

  1. Setting Up Volumes for Data Persistence
    • A Docker volume allows data to persist, independent of container lifecycle. Here’s how to create and manage a volume for MongoDB:
      docker volume create mongodb_data
      docker run --name mymongo -v mongodb_data:/data/db -d mongo:4.0
      
    • This setup ensures that the MongoDB data remains intact even if the container is stopped or removed.
  2. Backing Up and Restoring Data
    • Backup: To back up your MongoDB data from the Docker container, use the mongodump utility:
      docker exec -it mymongo mongodump --archive=/data/backup.gz --gzip
      

      Then, copy the backup file from the container to your host:

      docker cp mymongo:/data/backup.gz ./backup.gz
      
    • Restore: To restore data to your MongoDB container, first copy the backup file into the container:
      docker cp ./backup.gz mymongo:/data/backup.gz
      

      Then, use mongorestore to restore data:

      docker exec -it mymongo mongorestore --archive=/data/backup.gz --gzip
      

Security Configurations

Security is a key aspect of database management, especially when dealing with sensitive data. Follow these steps to secure your MongoDB Docker container:

  1. Configuring MongoDB User Authentication
    • By default, MongoDB does not require authentication. To enable it, you need to create an admin user:
      docker exec -it mymongo mongo
      

      Inside the MongoDB shell, run:

      use admin
      db.createUser({
        user: "admin",
        pwd: "yourpassword",
        roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
      })
      

      Exit the shell and restart your MongoDB container with authentication enabled:

      docker restart mymongo && docker stop mymongo && docker rm mymongo && 
      docker run --name mymongo -v mongodb_data:/data/db -d mongo:4.0 --auth
      
  2. Setting Up Network Security
    • Restrict network access to your MongoDB container to prevent unauthorized access. This involves configuring Docker network settings to limit connections only from specific IP addresses or networks:
      docker network create --driver bridge isolated_network
      docker run --name mymongo --network isolated_network -v mongodb_data:/data/db -d mongo:4.0 --auth
      
    • Use firewall rules to control traffic to and from the container. For instance, using ufw (Uncomplicated Firewall) on Ubuntu:
      sudo ufw enable
      sudo ufw allow from 192.168.1.0/24 to any port 27017
      sudo ufw deny 27017
      

Performance Optimization

Optimizing the performance of MongoDB in a Docker environment involves a few best practices and tools:

  1. Best Practices
    • Resource Limits: Docker allows you to set limits on CPU and memory usage for containers, which can help manage resource allocation:
      docker run --name mymongo -v mongodb_data:/data/db --memory="2g" --cpus="1.5" -d mongo:4.0
      
    • Storage Driver: Using the right storage driver can improve the performance of your MongoDB container. For most users, overlay2 is recommended due to its efficiency and speed.
  2. Monitoring Tools
    • Docker Stats: Monitor the usage statistics of your Docker containers using:
      docker stats
      
    • MongoDB Monitoring: Use MongoDB’s built-in tools like mongostat and mongotop to monitor the database’s performance:
      docker exec -it mymongo mongostat
      docker exec -it mymongo mongotop
      

Troubleshooting and Maintenance

Maintaining and troubleshooting a MongoDB Docker container involves regularly monitoring the logs, updating the software, and diagnosing common problems.

  1. Common Issues and Solutions
    • Container Does Not Start: Check Docker logs for any error messages:
      docker logs mymongo
      
    • Performance Degradation: Ensure that the container has enough resources and that the network settings are not overly restrictive.
  2. Routine Maintenance Tasks
    • Updates: Regularly update both Docker and the MongoDB image to ensure you have the latest security patches and features:
      docker pull mongo:4.0
      docker stop mymongo
      docker run --name mymongo -v mongodb_data:/data/db -d mongo:4.0
      
    • **Cleaning Up

**: Remove unused Docker images, containers, and volumes to free up space:

 ```bash
 docker system prune
 docker volume prune
 ```

Conclusion

Deploying MongoDB on a Docker container within an Ubuntu VPS provides a robust, scalable, and isolated environment for database management. This guide has covered the complete setup from installation to advanced configurations, including security, performance optimization, and maintenance. Always ensure that you back up your data regularly and keep your system updated to safeguard against potential threats. For further learning, consider exploring additional Docker functionalities and MongoDB features to enhance your deployment strategy.

This setup not only streamlines development and testing processes but also offers a high degree of flexibility in managing production environments. As you continue to work with MongoDB in Docker, consider exploring additional configurations such as replica sets and sharding to further enhance your database’s capabilities and performance.

Avatar of editorial staff

Editorial Staff

Rad Web Hosting is a leading provider of web hosting, Cloud VPS, and Dedicated Servers in Dallas, TX.
lg