Back to Projects

Vitreus

JavaSpring BootDockerReactJS

A docker management tool for development. Featuring an easy to use web based interface.

Vitreus Hero

Problem Statement

For a long time, docker desktop was not available for linux. Hence many linux users are used use docker CLI. However, sometimes CLI commands can be repeatitive and tiresome to type out. Docker desktop solves this problem, however, a competing project will be valuable as to research and learn even though I'm not trying to outperform docker desktop.

Project Description

As described in the problem statement, this project was developed with the intention of learning rather than replacing docker desktop with this. The project distributes itself as a docker image. A user can initialize a container with this image, mounting the UNIX docker socket as a volume. Therefore, can log into the web UI to do almost everything docker CLI allows to do.

Project is developed using Java with Spring Boot framework. Frontend is developed using React JS. This communicates with docker via the unix docker socket. Since this is more targeted for learning, it is not recommended to use this in production.

Challenges & Learning Experience

This project allowed me to learn how docker works under the hood. Through this I learnt applications can interact with docker via the docker socket. Also, in java, it is challenging to communicate with UNIX sockets. Through this project I figured out how to establish proper connections to UNIX sockets. I learnt that a docker container is nothing but a process, just as any other process in the system, however, isolated to its of filesystem and namespaces. Other than the process itself, there's nothing to point out and say as a "container."