Skip to content

Docker Orchestrator: Expanding Your Asset Library

The Docker Orchestrator in Coreflux is a powerful tool that allows users to seamlessly integrate a wide range of assets into their IoT data hub. By leveraging Docker, the orchestrator provides a flexible and scalable approach to adding functionalities based on specific needs.

Introduction

What is Docker?

Docker is a platform that enables developers to create, deploy, and run applications in containers. Containers allow an application and its dependencies to be bundled into a single package, ensuring that it runs consistently across different environments. This isolation guarantees that external factors do not affect the application, making it highly portable and reliable.

Why Use the Docker Orchestrator?

  1. Expandable Asset Library: Once the Docker Orchestrator is installed on your edge device or system, you can easily expand your asset library. This means you can integrate a variety of databases, tools, and other functionalities as per your requirements.

  2. Tailored to Your Needs: The orchestrator supports Docker images from specific companies, ensuring you get trusted and optimized solutions.

  3. Easy Configuration: Each asset comes with a JSON configuration, similar to the assetConfigSave object. This configuration typically includes Docker requirements and variables, making the setup process straightforward.

Available Assets:

Relational Databases (RDBMS):

mysql: A widely-used open-source relational database. - Description: MySQL is renowned for its reliability and fast performance. It's a favorite for web-based applications, including e-commerce platforms and content management systems. - Licensing: Open-source; users should review the MySQL licensing details.

postgres: A robust open-source object-relational database system. - Description: PostgreSQL offers advanced features such as table inheritance and function overloading. It's known for its extensibility and standards compliance. - Licensing: PostgreSQL License, a liberal Open Source license.

mariadb: Known for its fast performance, it's a fork of MySQL. - Description: MariaDB is developed as a drop-in replacement for MySQL. It includes features like the Aria storage engine and additional tools, plugins, and extensions. - Licensing: GPL v2.

cockroachdb/cockroach: A cloud-native SQL database tailored for scalable cloud services. - Description: CockroachDB is designed for cloud environments, offering features like automated scaling, distributed back-ups, and self-healing to ensure high availability. - Licensing: Cockroach Community License and also available as CockroachDB Enterprise.

Microsoft SQL Server (MSSQL): A relational database management system developed by Microsoft. - Description: MSSQL is known for its high performance, security features, and business intelligence capabilities. It's widely used in enterprise environments. - Licensing: Proprietary; users should review the Microsoft SQL Server licensing details.

Time-Series Databases:

influxdb: An open-source time-series database optimized for high-write-volume use cases like IoT. - Description: InfluxDB is designed to handle high write and query loads. It's particularly suitable for real-time analytics and monitoring applications. - Licensing: MIT License.

timescale/timescaledb: Time-series SQL database built on PostgreSQL. - Description: TimescaleDB offers the power and convenience of SQL, combined with the scalability typically seen in NoSQL databases. - Licensing: Timescale License (TSL); also available in an open-source version.

opentsdb/opentsdb: A distributed, scalable time series database. - Description: Built on top of HBase, OpenTSDB can run on several nodes to ensure scalability. It's designed for storing and serving massive amounts of time series data. - Licensing: GNU LGPLv2.1.

NoSQL Databases:

Document Stores:

mongo: A popular NoSQL document store. - Description: MongoDB stores data in flexible, JSON-like documents. This means fields can vary between documents and data structure can be changed over time. - Licensing: Server Side Public License (SSPL).

couchdb: Uses JSON for documents, JavaScript for MapReduce indexes, and regular HTTP for its API. - Description: Apache CouchDB is a database that uses JSON for documents, an HTTP API, & JavaScript/declarative indexing. - Licensing: Apache License 2.0.

Key-Value Stores:

redis: An in-memory data structure store, used as a database, cache, and message broker. - Description: Redis supports various data structures such as strings, hashes, lists, sets, and more. It's renowned for its performance and flexibility. - Licensing: BSD 3-Clause License.

Column Stores:

cassandra: A highly scalable multi-master database with no single points of failure. - Description: Apache Cassandra is designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. - Licensing: Apache License 2.0.

hbase: A distributed, scalable, big data store, part of the Apache Hadoop project. - Description: Apache HBase provides random, real-time read/write access to big data, built on top of Hadoop and HDFS. - Licensing: Apache License 2.0.

Graph Databases:

neo4j: A graph database that is ACID-compliant. - Description: Neo4j is a native graph database platform, built from the ground up to leverage not only data but also data relationships. - Licensing: GPL v3 for the community edition; commercial licenses available for enterprise editions.

arangodb/arangodb: A multi-model NoSQL database supporting graph, document, and key/value data models. - Description: ArangoDB is a scalable graph database that can store up to billions of different graphs, allowing for efficient querying, even for complex graph joins. - Licensing: Apache License 2.0 for the community edition; commercial licenses available for enterprise editions.

Installation

Method 1: GUI

// Instructions for GUI installation

Method 2: Command-line

// Instructions for command-line installation

Configuration

Docker Parameters

  • ImageName: Specifies the Docker image to be pulled.
  • Env: Contains environment variables required by the Docker image.
  • PortBindings: Maps the container port to the host port.
  • Volumes: Specifies any volumes or data to be persisted outside the container.

Example Configuration

{
    "ImageName": "mcr.microsoft.com/mssql/server:latest",
    "Env": [
        "ACCEPT_EULA=Y",
        "MSSQL_SA_PASSWORD=sa"
    ],
    "PortBindings": {
        "1433/tcp": "1433"
    },
    "Volumes": {
        "sqlVolume": "/path/in/container"
    }
}

Running the Asset

Once the asset is installed, it is designed to run autonomously. The asset will automatically detect Docker on the edge device and initiate its processes. This hands-free approach ensures that the asset is always operational, reducing manual intervention and potential errors.

In the roadmap, Coreflux aims to further enhance this automation, ensuring assets can integrate even more seamlessly with Docker and other components in the system.

FAQ

General Questions

What is Docker and how to install?

Docker is a platform that allows developers to create, deploy, and run applications in containers. Containers are isolated environments that contain an application and all its dependencies, ensuring it runs consistently across different environments. To install Docker, visit the official Docker website and follow the installation instructions for your operating system.

How do I ensure my Docker containers are running?

You can use the docker ps command to list all running containers. If you want to see all containers, including the stopped ones, use docker ps -a.

How does Coreflux's Docker Orchestrator differ from standard Docker management?

Coreflux's Docker Orchestrator is tailored for IoT applications. It provides seamless integration of various assets, ensuring they run optimally in an IoT environment. The orchestrator also offers enhanced automation and management features compared to standard Docker.

Can I add my own Docker images to the Coreflux Docker Orchestrator?

While Coreflux provides a wide range of assets, it's recommended to consult with the Coreflux team before integrating third-party or custom Docker images. This ensures compatibility and optimal performance within the Coreflux ecosystem.

Troubleshooting Questions with Docker on Windows

I'm facing issues installing Docker on Windows. What should I do?

Ensure you're using a compatible version of Windows, such as Windows 10 Pro, Enterprise, or Education. Docker Desktop requires Hyper-V, which is not available in Windows Home editions. If you're using a compatible version and still facing issues, consider checking Docker's official documentation or forums for Windows-specific troubleshooting steps.

My Docker containers aren't starting on Windows. How can I resolve this?

Ensure that Hyper-V and Containers features are enabled on your Windows system. Restarting Docker or your system can also help resolve minor glitches. If the issue persists, check the Docker logs for specific error messages.

Troubleshooting Questions with Docker on Linux

Docker service fails to start on Linux. What can I do?

First, try restarting the Docker service using sudo systemctl restart docker. If the issue persists, check the Docker service logs using journalctl -u docker.service to identify any specific errors.

I'm getting a 'permission denied' error when trying to run Docker commands on Linux. How can I fix this?

This is likely due to user permissions. You can either run Docker commands with sudo or add your user to the docker group using sudo usermod -aG docker $USER. Remember to log out and back in for the group changes to take effect.

Note: Coreflux manages Docker containers for users. It's essential not to manually change the images of the assets to ensure seamless operation and compatibility.

By leveraging the Docker Orchestrator, Coreflux users can easily expand their asset library, ensuring they have the right tools and databases to meet their IoT needs.