No Need For Docker Anymore
Tags: devops, docker, softwareengineering, tooling
Published: 2024-07-12 15:42:33

## Introduction
No need for Docker anymore I hear many people say, well I'd like to express that Docker is incredibly relevant today and into the future - We are not saying goodbye!

## Docker
Docker was and still is a game-changer in software engineering, offering a containerisation approach to application development, deployment and management.

Here's a run-down of its significance and the advantages Docker can bring to you and your team:

- **Consistent Environments:** Docker ensure consistent environments across development, testing, and production stages. By encapsulating applications with their dependencies in isolated containers, Docker eliminates environment-related issues that can plague the development lifecycle.

- **Streamlined Collaboration:** Dev Containers, built on Docker's foundation, provide a standardised development environment for your team. Everyone on the product/project gets an identical container with the necessary tools and libraries, fostering a seamless collaboration and eliminating setup discrepancies.

- **Improved Portability:** Docker applications are inherently portable. Containers can run seamlessly on any Linux machine with Docker installed, regardless of the underlying infrastructure. This simplifies development across various environments from local development machines to cloud platforms.

- **Faster Development Cycles:** With Docker, developers can spin-up new environments in seconds. This agility translates to faster development cycles, as developers can quickly test and iterate on their code without lengthly setup times.

- **Efficient Resource Utilisation:** Containers share the host operating system's kernel, making them lightweight and resource-efficient compared to virtual machines. This allows you to run more applications on the same underlying hardware, optimising resource utilisation.

- **Simplified Scalability:** Scaling Dockerised applications is a breeze You can easily add or remove containers based on demand, enabling horizontal scaling for increased processing power or handling spikes in traffic. This leads onto container orchestration platforms such as Kubernetes.

- **Enhanced Reliability:** Docker containers isolate applications from each other and the host system, promoting stability and reliability. If one container malfunctions, it won't impact other containers or the underlying system.

What's not to like hey? 😁

## Learning Curve
I acknowledge that there is a learning curve, but trust me (hopefully you can), the initial investment will pay-off in the long term.

We can mitigate by adopting a strategic approach that focuses on practical experience alongside foundational knowledge.

- **Start with the Basics:** Begin by understanding the core concepts like containers, images, and Docker files. Numerous beginner-friendly tutorials and workshops are available online.

- **Hands on Learning:** The best way to solidify new knowledge and understanding is through practical application. Work on small projects, maybe personal ones using Docker. This will help you grasp how Docker functions in real-world applications.

- **Leverage Online Resources:** The Docker community is extensive and supportive. Utilise online forums, communities and of course the official Docker documentation to find answers, troubleshoot issues, and learn from other peoples experiences.

- **Focus on Practical Use Cases:** Instead of getting bogged down by every minute detail, concentrate on how Docker can address your specific development needs. This will make the learning process more engaging and goal-orientated.

## Final Thoughts
Docker, along with Dev Containers, streamlines the software development process by ensuring **consistency**, **portability**, **efficiency**, and **scalability**. By adopting these technologies, you and your team can feel empowered to deliver high-quality software faster and more reliably.

## BONUS!
Containerisation is available in different flavours so-to-speak, however, Docker, along with Docker Desktop and its offering is what I would highly recommend if you are doing anything commercially; if you are just doing something yourself you can get away without it. However, if purely personal and not commercial you can still use Docker Desktop without any cost!

The benefits of [Docker Desktop](https://www.docker.com/products/docker-desktop/), [Docker Hub](https://www.docker.com/products/docker-hub/) are immense, when you are using base images from external sources you are relying on trust. That's all well and good, however, you can also trust Docker Inc. i.e. if you enable only Docker Official images and Verified Publisher images, you are additionally trusting Docker Inc. as well. I see this as a good thing!

It's all about securing your software supply chain, every link in that chain you would ideally want to be trusted, verified and more. Docker helps you improve in this area directly. Not only this but Docker Inc, has made some strategic acquisitions recently, one to mention is [Chainguard](https://www.chainguard.dev/). I won't go into much of that here, but in essence [Chainguard](https://www.chainguard.dev/) curates minimal, highly-optimised container images and either reduces the open CVE's or gets the CVE count down to zero! Awesome 😎

One last thing, Docker Inc, has [Docker Scout](https://www.docker.com/products/docker-scout/) which further improves your software supply chain, there's that key phrase again, it's because it's vitally important and not to be underestimated.

## More Information
- Docker: https://www.docker.com
- Docker Docs: https://docs.docker.com
- Docker Desktop: https://www.docker.com/products/docker-desktop/
- Docker Hub: https://www.docker.com/products/docker-hub/
- Docker Scout: https://www.docker.com/products/docker-scout/
- Chainguard: https://www.chainguard.dev/
- Kubernetes: https://kubernetes.io/
- Nomad: https://www.nomadproject.io/
- Udemy, Docker Mastery: https://www.udemy.com/course/docker-mastery/