What is Docker?


Docker is a platform or ecosystem around creating and running Docker containers. In the end, is container technology. It's a tool for creating and managing containers but what exactly does it mean?

What's a container in software development and why might we want to use it?


The term container might be strange at first because if you hear about a container, you might think about something like this.

docker container

This is a container we would load onto ships or trucks to move goods around. Well, and it's the same idea as with Docker or containers. We have standardized containers here like this and we can fit various goods into these containers but they are then self-contained and isolated.

The goods in one container don't get mixed with goods from another container. If you need something like cooling, it can be built into the container. And therefore the container works standalone and it can be put onto any ship or any truck, which is able to handle containers.

Container in software development is a standardized unit of software, which basically means it's a package of code, required dependencies for that code, and tools required to run that code. So for example, if you're building a java application. JRE is the java run time that could be used to execute java code on a server. If you had such an application with a container built with Docker, you could have your application's source code in that container, as well as the JRE runtime and any other tools that might be needed to run that code. And the advantages that the same container with the same java code and the same JRE tool, so to the same JRE runtime with always the same version and that's the key thing, and it will always give you the exact same behavior and result. There are no surprises because it's all baked into the container. It's always the same.

A package of code and dependencies to run that code. ie. (Java Code + JRE). Once a container is created it always executes and behaves in the same way.

Benefit of Containers