Skip to main content

Deploy NineData Community Edition

Use this guide to deploy NineData Community Edition in a Docker container.

Before you begin

  • Docker is installed on the server.
  • The server architecture is Intel x86_64, with a minimum specification of 4-core CPU / 16 GB memory / 200 GB disk space.
  • The operating system must be one of the following:
    • CentOS Stream 9, 8, or 7.9
    • Ubuntu 24.04, 22.04, 20.04, or 18.04
    • Debian 12.10 or 11.11
    • OpenSUSE 15.5
    • RockyLinux 9.5 or 8.10

Deploy NineData Community Edition

  1. Connect to the server and run the following command:

    docker run -p 9999:9999 --privileged -v /opt/ninedata:/u01 --name ninedata -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest

    Command options:

    • -p 9999:9999: Maps container port 9999 to server port 9999 so browsers can access NineData through the server.
    • --privileged: Gives the container the privileges required to run NineData.
    • -v /opt/ninedata:/u01: Mounts the server's /opt/ninedata directory to the container's /u01 directory for data storage.
    • --name ninedata: Sets the container name to ninedata. Specify a different container name if required.
    • -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest: Pulls the NineData image from the specified image address.
    tip
    • NineData provides image downloads in multiple regions. For faster downloads, replace the image address after -d with the closest mirror. See the Appendix for image addresses.
    • This guide uses the built-in MySQL instance in the container as the metadata database. To use your own MySQL metadata database, see (Optional) Using an External Metadata Database.
  2. After the container starts, NineData deploys and initializes in the container. This process usually takes about 5 to 10 minutes. Check the initialization progress with docker logs -f ninedata. The following message indicates that NineData has started successfully.

    image-20250310171459303

    tip

    If you specified a different container name in step 1, replace ninedata in the above command with your actual container name.

  3. Open http://<server_ip>:9999 in a browser to access the NineData console login page. The initial administrator account and password are both admin. After the first sign-in, change the administrator password when prompted.

    image-20250310171539071

Result

NineData Community Edition is running on the server and the console is available through <server_ip>:9999. Sign in with the initial administrator account, complete the password change, and start configuring NineData.

Next steps

Appendix: List of NineData Community Edition Image Addresses

  • North China - Beijing: swr.cn-north-4.myhuaweicloud.com/ninedata/ninedata:latest

  • East China - Shanghai: swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest

  • South China - Guangzhou: swr.cn-south-1.myhuaweicloud.com/ninedata/ninedata:latest

  • Official NineData Docker Hub Address: ninedata/ninedata:latest

Frequently Asked Questions

  • Q: The browser can no longer open the Community Edition console and returns a 504 error. What could be the reason?
    • Possible cause: The server may not have enough disk space.
    • Solution: Increase the disk space, run docker restart <container ID>, and wait about 10 minutes for startup to complete.
  • Q: After running docker logs -f ninedata, the output says detailed logs are available in /u01/server.log and then stops updating. What could be the reason?
    • Possible cause: The server may still contain files from a previous deployment in the NineData storage directory, such as /opt/ninedata.
    • Solution: Clear the previous deployment directory and rerun the deployment steps in this guide.
  • Q: The NineData container fails to start, and the server.log contains the error "Failed to start ContainerManager" err="cannot enter cgroupv2 \"/sys/fs/cgroup/kubepods\" with domain controllers -- it is in an invalid state". What could be the reason?
    • Possible cause: Newer Linux distributions enable CGroup v2 by default. If Docker attempts to create a sub-CGroup, it may trigger an invalid state error and prevent the container from starting.
    • Solution: Add --cgroupns=host to the docker run command to share the host's CGroup namespace. For example: docker run --cgroupns=host -p 9999:9999 --privileged -v /opt/ninedata:/u01 --name ninedata -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest
  • Q: The NineData container fails to start, and the server.log contains the error "kube-proxy exited: iptables is not available on this host". What could be the reason?
    • Possible cause: The container may not be running in privileged mode or may not have the host's /lib/modules directory mounted, which prevents it from managing iptables rules.
    • Solution 1: Adjust container permissions and run the container in privileged mode. Add --privileged and grant NET_ADMIN capabilities. For example: docker run --cap-add NET_ADMIN --privileged -v /opt/ninedata:/u01 --name ninedata -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest
    • Solution 2: Mount the kernel module directory. Add -v /lib/modules:/lib/modules to mount the host's kernel module directory into the container. For example: docker run -v /lib/modules:/lib/modules --privileged -v /opt/ninedata:/u01 --name ninedata -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest
  • Q: NineData container fails to start. Running docker exec -it kubectl get pod -A to check the service status shows that the metadb service failed to start. How can this be resolved?
    • Possible cause: The server's hardware specifications may cause the metadata database to time out during startup.
    • Solution: Deploy MySQL as the metadata database yourself and deploy the NineData service using an external metadata database. For more information, see Using an External Metadata Database.