GODocker

Cluster computing system with Docker

What is GO-Docker?

It is a cluster management tool using Docker as execution/isolation system. It can be seen like Sun Grid Engine/Torque/... The software does not manage however itself the dispatch of the commands on the remote nodes. For this, it integrates with container management tools (Docker Swarm, Apache Mesos, ...) It acts as an additional layer above those tools on multiple user systems where users do not have Docker priviledges or knowledge.

Designed for customization

A plugin management system gives the possibility to add new authentication or authorization management, to create a different scheduler to order the submitted jobs based on user consumption/quotas....

It is also possible to develop new execution system integration (Kubernetes, Mesos,....)

Time saver

Execute and watch your jobs via the web interface from home, work, ...

CLI interface also allows remote access to the system.

Isolation

Docker provides job isolation. Main process but also all child processes are isolated in their container.

Statistics

Live statistics on container usage and general statistics are available for users and administrators.

Scalable

from a single server to ... well ... many servers!

Application still need to be tested on large systems, but web servers can be scaled to face web/API requests as well as executors.

Many executors (check tasks, kill them...) can be ran in parallel, however only one scheduler can be running has it needs knowledge of all pending tasks and users.

Technologies / Components

  • Docker / Swarm / Apache Mesos
  • Python
  • AngularJS
  • MongoDB
  • Redis
  • NodeJS
  • cAdvisor (optional)
  • InfluxDB (optional)

Features

Get Started

CLI

CLI commands


   #godjob create -n job_name -d "example job" -i centos:latest -s script_to_execute.sh -v home --cpu 2 --ram 10
  #godjob create -n job_name -d "interactive job" -i rastasheep/ubuntu-sshd --interactive
                     

Web

REST API

    
        $.getJSON('/api/1.0/task/12', function(data){
            console.log('task status': data.status.primary);
        });
    

Software

GO-Docker is open source and is available at:

GO-Docker scheduler and executor

GO-Docker Web server

GO-Docker Live notifications

GO-Docker CLI

Wanna contribute?

Feel free to fork the code and send pull requests

The plugin system allows to integrate new scheduler algorithms or executors (like Docker Swarm), do not hesitate to develop new ones to extend GO-Docker integration and capabilities.