DockStation and why we created it

DockStation
7 min readNov 22, 2017

--

It’s not always easy to deal with Docker! In this article I’ll try to shed some light on what is the reasoning behind DockStation project and what it is capable of.

The inception

I’ve been working as a software engineer for more than 8 years. It had always been a pain to set up my own dev environment. And when for some reason I had to change a machine or even migrate to another OS, I had to repeat the whole exercise again!

That’s why I believe that at some point any programmer needs to obtain a single, homogenous, autonomous and portable environment for all their development needs. Being portable is a key feature here.

How else are you going to easily move it from one computer to another? Moreover, it must be autonomous and to some fair extent virtual — so that you can start and stop it in one click and even share it with your friends.

I was thinking a lot about this. And a recent buzzword kept popping up in the back of my head mind — Docker. Could it be the cure? I didn’t know much about it, even though the project was already well known and praised enough. Someone even called it the best IT thing to come in near 20 years.

Now I need to confess. To be honest, I’m a part-time nightly DevOps. Nevertheless, I had no idea of what all those containers really are. And I decided to go deeper, out of pure curiosity.

Docker: control?

So, the journey began. First steps were tough!

Even though Docker is marketed like a deployment tool, it works even better as a complete solution for development environments!

I spent about a week thoroughly considering the documentation. Eventually the idea behind Docker became somewhat clear. I could even boast, I understood a kind of container philosophy.

But one thing ruined it all: excessively long CLI one-liners. I had to execute them every time to get the magic container working. It simply didn’t feel right! Happily, Docker developers prepared one more ace up their sleeves. Docker Compose which allows us to neatly pack all the boring command-line stuff into a single file. So, I spent some time converting all the work and personal projects.

Looks great? I found no joy in having more than 50 separate containers. And the next question materialized in the air: how to control it all easily and effective?

Worthless rivals

First thing I ran into was Kinematic. Another (and probably least loved) child of Docker team. This GUI based app can manipulate containers by performing the most basic actions: start, stop, restart, view logs, monitor and long into any container.

These tools however in no way helped me to group, organize, manage and logically separate containers from different software projects. Then there was Rancher (a pure deployment tool which ignores developers’ needs). I found also Shipyard and Portainer. Only to realize that those tools were way too like Kinematic (although, a bit more sophisticated).

That’s when I asked myself: if there is no ready-made tools which suits my humble needs — why not create one?

DockStation made me quit my job

Enthusiasm is good, inspiration is even better, devotion is the only thing you need! However sometimes it’s dangerous to go alone. Fast-forward to December 2016, my friend Pavel Lozko joined the project.

Being experienced Docker user, he got up to speed easily and agreed to give it a whirl.

Two months later I decided to work on the project full time.

We bravely ignored advices of self-proclaimed start-up gurus (Who on Earth needs code? Just grab the idea and throw it to investors. Yes, it’s supposed to be that easy!).

It took us memorable 6 months to deliver first public release (and yes, there was a lot of coding).

This product relies on some basic principles:

1. Kickstart is easy — just use it, no need to bury yourself under piles of documentation. With usage comes understanding.

2. The application should be native; thus, it launches easily requiring minimum to zero of initial setup effort.

3. Backwards compatibility. All your projects created inside DockStation can be run in CLI as well. Moreover, you can import Docker Composer projects into the app.

4. Maximum GUI functionality. While by no mean intending to put down command line, DockStation gives you an opportunity to click through everything.

The sum of all features

1. On-the-fly project creation:

· Import existing project by picking a directory with docker-compose.yml

· Parse Docker commands (the feature currently in beta). If you rely heavily on docker run, that’s not a problem. Just type the command into DockStation and see your Compose project created.

· Create a new project in one click using local or cloud-based images.

2. Monitoring for all projects and services.

Check project’s health status any time. If something is wrong, you’ll be able to find out why (easily identify problematic service, analyze logs using full text search).

3. Managing containers and services

· Rapid launch, stop, restart of services and all the corresponding containers.

· Rapid containers clean up.

· One-click access into any of your containers.

· Get detailed info on any of your containers.

· Change image version, bind ports, define and override environment variables.

· Many obvious but still necessary features for a software project administration.

4. Configure software projects

Frequently used settings are available via GUI. All changes are written directly to docker-compose file (which is still fully customizable).

5. Work with local or remote Docker

With DockerControl you can easily create a remote connection to Docker server obtaining full control of it just like you do with a local one. A very powerful feature is SSH access. It helps avoiding significant amount of chore work of setting up additional security rules and opening non-standard ports to the world.

6. Get stats on resources usage (entire project or separate containers)

Monitoring is Docker’s weak spot. By default, it only allows to monitor resources on a per container basis. Well, we fixed this (however, corresponding issue exists on Docker’s GitHub, perhaps they will implement it as well https://github.com/docker/compose/issues/1197)

7. Realtime resource monitoring

It’s like any task manager you familiar with. The only difference is that every entry there is a container.

8. Full featured Docker Machine support

Yes, it works with Docker Machine. Choose the driver you need: VirtualBox, VMWare or Hyper-V.

9. Docker Hub support

Any image on Docker Hub is only a click away. Find and configure one that is suitable for you.

10. Some perks and features

· Containers used to change their IP on every restart. It makes thing unnecessary complicated for multiple projects. We fixed this as well. Now every container has a corresponding /etc/hosts record which keeps track of container’s IP for you.

· Dock Station supports override configs.

What we got so far

To be concise: we made it. Having left comfortable and secure full-time jobs, having spent more than 10 months of life (and some amount of money), we made it. We released the product we proud of. And this is only the beginning.

Although we missed most of the start-up parties, fancy events and fundraising rounds. Our team got something more significant: 1000+ real developers who trust our product, tons of positive feedback, a bunch of feature requests awaiting implementation. And this is the only thing that motivates us and gives inspiration to work even harder. Stay tuned!

DockStation Site: https://dockstation.io/
DockStation GitHub: https://github.com/DockStation/dockstation

--

--