Skip to main content
4 min read

Pioneering Containerization: My Docker Journey in 2014

How I discovered and implemented Docker containers in my college thesis project years before it became mainstream, including the challenges, breakthroughs, and lessons learned from early adoption.

Docker
Containerization
DevOps
Innovation
Early Adoption

The Pre-Container Age

Prior to 2014, containerization was an alien concept to most developers. Virtual machines were the norm, deployment meant FTP file transfers and in the development environment, "it works on my machine" was a fact of life. As a student of computer science, I needed the ability to have reproducible, isolated environments for my thesis which consisted of a mobile code editor capable of deploying and running web applications on-demand.

It was then that I discovered Docker.

The Early Days of Docker

Docker was less than a year old and had scarce documentation and nearly nonexistent ecosystem. Most developers were doubtful. My thesis project was revolutionary in 2014. A mobile-first Angular code editor, custom PHP micro-framework, on-demand container provisioning and automatic deployment with DigitalOcean.

Implementation Issues

Working with Docker 0.8-1.0 was rather restrictive. No docker-compose, limited networking and basic Dockerfile definition. I had to build everything from scratch:

  • Custom PHP Framework: Routing and logging aware of containers
  • Mobile Angular Editor: Management of containers from mobile web browsers
  • Automated Deployment: Custom orchestration layer for container management

Technological Advances

I implemented on-demand container creation and destruction. Users would be capable of creating projects, coding from their mobile devices, seeing their work in real time and destroying their environments instantly. This was custom container orchestration before Kubernetes, mobile-friendly development long before it became fashionable and microservice pattern implementation before it became mainstream.

Major Issues

Poor Documentation: Solutions were only obtainable by experimenting and reading the source code. There were countless hours spent in IRC begging for solutions to the issues.

Networking Difficulties: Crude container networking required lots of custom proxying logic for networking.

Performance Issues: Containers took seconds to start as opposed to milliseconds.

How It Impacted My Career

My early docker experience has enabled me to operate in all the companies in which I worked, as the technology leader. Working with immature technology has enabled me to learn such things as, reading embedded code when the documentation fails, implementing non-standard solutions, modular thinking approach to complex solutions, and coping with the risks of technology.

What It Taught Me

Imperfection is OK: Stay true to the core value of the attempt to work around problems.

Abstract the: The custom APIs make the product independent of the platform instability.

Keep The Community Interested: The small early mention community is small but strong.

Make Your Bets Early: By the early realisation of the fundamental changes competitiveness will be achieved.

The Road of Docker

What used to take custom scripts in 2014 today has sophisticated orchestration platforms with auto-scaling, service-discovery and self healing. The early version of Docker had little security - now it has image scanning, secrets processing and compliance frameworks.

Advice to Tech Pioneers

What Evaluation Criteria Should be Adopted?

  • Does It Solve a fundamental question which is not done well by the existing solutions?
  • Is it a fresh way of thinking?
  • Is it being actively developed and adopted in increasing numbers?

Risk Mitigation

  • Start small with proof of concepts
  • Document both the successes and failures
  • Share the successes and failures by blog posts and open source

The Result!

My Docker 2014 experiment was a master-class of technology evaluation and risk taking. The most important factor learned was not the learning of a technology; but rather the perceived fundamental changes in which we build and deploy.

Today I use these principles in a number of the emerging technologies such as WebAssembly, edge development, AI driven Resources, namely, find the problem and fix it, enjoy the immature technology, get used the paradigm shifts!

Final Thoughts

To become an early adopter requires the judgement to see the transformational transfers before they are obvious. My Docker experience taught me to see the possibilities instead of the restrictions so that I could lead the moves in the technologies, build the scalable solutions and lead the teams through the adoption turbulence through my life.