All Projects → wakonp → jupyterhub-deploy-swarm

wakonp / jupyterhub-deploy-swarm

Licence: other
A DockerSwarm Jupyterhub setup, which uses a NFS Server running in a Docker Container for persistent storage

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to jupyterhub-deploy-swarm

unfs3
UNFS3 is a user-space implementation of the NFSv3 server specification.
Stars: ✭ 74 (+289.47%)
Mutual labels:  nfs, nfs-server
Leofs
The LeoFS Storage System
Stars: ✭ 1,439 (+7473.68%)
Mutual labels:  nfs, nfs-server
docker-nfs4
Simple containerized NFS v4 server running on Alpine Linux
Stars: ✭ 19 (+0%)
Mutual labels:  nfs, nfs-server
docker-workshop
Workshop on Docker, Containers and Golang
Stars: ✭ 20 (+5.26%)
Mutual labels:  docker-swarm, docker-volumes
docker-nfs-server
No description or website provided.
Stars: ✭ 31 (+63.16%)
Mutual labels:  nfs, nfs-server
puppet-nfs
Installs and configures NFS server and clients
Stars: ✭ 14 (-26.32%)
Mutual labels:  nfs, nfs-server
vagrant-boot2docker-swarm
A multi-machine Docker swarm Vagrant environment
Stars: ✭ 16 (-15.79%)
Mutual labels:  docker-swarm
team-compass
A repository for team interaction, syncing, and handling meeting notes across the JupyterHub ecosystem.
Stars: ✭ 59 (+210.53%)
Mutual labels:  jupyterhub
docker-volume-hetzner
Docker Volume Plugin for accessing Hetzner Cloud Volumes
Stars: ✭ 81 (+326.32%)
Mutual labels:  docker-swarm
Semantic-Textual-Similarity
Natural Language Processing using NLTK and Spacy
Stars: ✭ 30 (+57.89%)
Mutual labels:  nbgrader
traefik-ondemand-service
Traefik ondemand service for the traefik ondemand plugin
Stars: ✭ 35 (+84.21%)
Mutual labels:  docker-swarm
pmOCR
A wrapper for tesseract / abbyyOCR11 ocr4linux finereader cli that can perform batch operations or monitor a directory and launch an OCR conversion on file activity
Stars: ✭ 53 (+178.95%)
Mutual labels:  nfs
swarm-pack
Package management for Docker Swarm
Stars: ✭ 22 (+15.79%)
Mutual labels:  docker-swarm
datahub
JupyterHubs for use by Berkeley enrolled students
Stars: ✭ 40 (+110.53%)
Mutual labels:  jupyterhub
jupyterhub-istio-proxy
JupyterHub proxy implementation for kubernetes clusters running istio service mesh
Stars: ✭ 26 (+36.84%)
Mutual labels:  jupyterhub
nfs-volume-release
No description or website provided.
Stars: ✭ 17 (-10.53%)
Mutual labels:  nfs-server
magento2-ansible-vagrant
Ⓜ️2️⃣ Ansible provisioned Ubuntu 16.04 vagrant box for Magento2 development.
Stars: ✭ 25 (+31.58%)
Mutual labels:  nfs
docker-roj
Portable environments for Docker swarms and stacks
Stars: ✭ 31 (+63.16%)
Mutual labels:  docker-swarm
scim-examples
1Password SCIM bridge deployment examples
Stars: ✭ 91 (+378.95%)
Mutual labels:  docker-swarm
wyzecam-hls
Converts MP4 files from WyzeCam NFS to HLS stream. Much more stable alternative to RTSP firmware.
Stars: ✭ 58 (+205.26%)
Mutual labels:  nfs

jupyterhub-deploy-swarm

This repository represents my parctical research project for my master thesis. I used the jupyterhub-deploy-docker as the base for this repository. The main difference between them is, that this jupyterhub-fhjoanneum is using SwarmSpawner, whereas the jupyterhub-deploy-docker is using the DockerSpawner to generate notebook servers in a docker environment. The DockerSpawner is able to deploy containers only. That means DockerSpawner does not support the service concept of Docker which comes with version 1.12.0, which is the reason why this projects uses SwarmSpawner.

Also please checkout the wiki for more information.

Many thanks to all contributers who made this possible.

Docu will be updated over time!

Overview

Application Overview

Authenticator

This project is using the LDAPAuthenticator for jupyterhub.

Spawner

As mentioned before, the project is using the SwarmSpawner as the jupyterhub spawner class, which is able to create Docker services in a Docker swarm setup. It is necessary to provide a working Docker Swarm environment to run this jupyterhub-deploy-swarm example.

nbgrader

Nbgrader is also installed on each spawned notebook server. While spawning the servers, the spawner can distinguish between a teacher or a student and uses different images for each type of group. The difference between these images is, that teacher can create and assign Assignments, whereas the students can attempt and submit them back to the teacher.

Persistant Storage

The basic approach to store data via Docker is to use Docker Volumes. The only problem with this solution is, that the volumes are only available on the host, which created the volume. There is no way to share the volumes in the Docker Swarm yet. That's the reason why the project uses Docker NFS Volumes.

A single NFS-Server get started in a container on the main host. Every other host is able to communicate with this NFS-Container and therefore can create the Docker NFS Volumes.

Usage

The whole project is using the Makefile to perform actions, like creating a new Docker Volume or building a Docker Image. Here comes a detailed list of how to use the Makefile:

make <command>

Please make sure to clone this repository on the main node of a Docker Swarm. Then modify the jupyterhub_config.py and execute make run to start everything. This will trigger the docker pull command, which will load the walki12/jupyterhub Docker Image from Dockerhub, create a new overlay network for the application, the Docker Volumes for persistant storage and start the NFS-Container and the jupyterhub service.

Maintasks Commands

These commands are used to control the whole project (NFS, jupyterhub).

  • run
    • removes all running docker instancies (network/volumes/container/service) and creates and starts them again.
  • start
    • starts the NFS container and the jupyterhub service. (Volumes and Network must be available)
  • stop
    • stops the NFS container and removes the jupyterhub service. (Volumes and Network are still availabe)
  • remove
    • removes all running docker instancies (network/volumes/container/service)
  • restart  - runs stop and start.
  • rerun  - runs remove and run
  • rebuild  - runs removejupyterhub_build, jupyterhub_push, jupyterhub_updatenodes and run
    • it builds the jupyterhub Docker Image again and restarts the application with the new image.

NFS tasks Commands

NFS specific commands, which will only effect the NFS Container and/or the underlaying volumes.

  • nfs_run  - calls nfs_remove, nfs_start and nfs_config
  • nfs_config
    • connects into the NFS Container and executes commands (create group/user)
  • nfs_start  - starts the NFS Container like docker start <nfs-container-name> (Container must be available (stopped))
  • nfs_stop
    • stops the NFS Container.
  • nfs_remove
    • removes the NFS Container and the Docker NFS Container Volumes
  • nfs_restart  - runs nfs_stop and nfs_start (careful nfs_config did not get called)

Jupyterhub tasks Commands

Jupyterhub specific commands, which will only effect the Jupyterhub Service and/or the underlaying volumes.

  • jupyterhub_run  - calls jupyterhub_remove, creates the volume and calls jupyterhub_start
  • jupyterhub_start
    • starts the jupyterhub Service (Volumes/Network must be available)
  • jupyterhub_remove
    • removes the jupyterhub service and the Docker Volumes of the service
  • jupyterhub_restart
  • jupyterhub_build
    • builds a jupyterhub Docker Image
  • jupyterhub_push  - pushes the Docker Image of jupyterhub to Docker Hub
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].