What is Docker?

EvangelosEvangelos
4 min read

Docker is an open platform, software development platform used to:

  • Develop ๐Ÿ‘ท

  • Ship ๐Ÿšš

  • and run applications โ–ถ๏ธ

It makes it easy to develop and deploy these applications inside of neatly packaged virtual containerised environments.

Develop and deploy โš’๏ธ

When creating software you want to make sure that what you're building is consistent and works on all of the target devices you intend the software to run on.

Picture this...

You've just finished an awesome Lego building and now your friend who lives 1000 miles away from you want to use it.

What you can do is place all of the Lego pieces into a box with all the tools and instructions inside the box so when your friend receives the box, they have exactly everything they need to fix and play with the Lego.

This is what Docker containers are. ๐Ÿ“ฆ

But rather Docker configures the Lego Pieces all together meaning you won't have to worry about piecing together the application (or the Lego in this example).

So what does this actually mean?

It means apps can run consistently on whatever device they are being run on.

Docker allows your software to:

Become easier to use โœ…:

  • You can transfer containers to basically any operating system and start up programs as quickly as running a simple command in the terminal.

    Compared to having to download systems, additional software and other dependencies on other devices, Docker takes care of all of these hassles.

Less work to run ๐Ÿ‹๏ธ:

  • Docker allows software to host multiple applications if you software requires it, supporting different versions, docker makes testing and development a smooth process with it's consistent and reliable performance.

Be easier to maintain and deploy ๐Ÿค:

  • After you've ran and tested it successfully on a system, you can be sure that the application/software will precisely and as effectively every time you software is ran.

Here are some key terms you should be aware of before getting started with Docker.

A Docker Image ๐ŸŒƒ

You can think of these as the DNA of a container. It's the code that creates the containers that run on the Docker platform.

It's a "snapshot" of what will be inside of the container when it runs.

i.e binary, runtimes, dependencies and any other materials needed to run your application.

For example, to start a web server image, you would need

  • An image that includes Ubuntu Linux (A base operating system)

  • Additional packages like PHP, Apache ( is software run by your website hosting provider so that visitors can view the web pages on your site.

A Container ๐Ÿ“ฆ
Docker containers are an isolated environment where an application is ran without affecting the rest of the system nor the system impacting the application.

Containers allow you to build working applications on any device as all the issues of software versions and dependencies are all managed by the container itself.

These containers as little micro computers each having their own specific jobs. ๐Ÿ’ผ

They each have their own CPU process, memory and network resources.

They can be stopped and started without affecting each other or the host machine.

Containers usually perform one specific tasks i.e connecting and running a MySQL database, or a Node.js application.

On https://hub.docker.com/ - they've loads of different Docker containers that pre-configured for a specific language.

You may still be asking... but what is Docker actually used for???? ๐Ÿค”

Software testing ๐Ÿงช:
As you may know software testing is an aspect that simply cannot be ignored when building software.

With the variations of testing combined with the different types can cause serious headaches for the development team potentially leading to errors within the software.

Docker allows developers to reduce the amount of attempts needed to rerun these tests.

If these test fail on the users device, they will also fail on the local machine (The machine you running the test from)

Meaning all test results will be the same across all computing environments.

Adoption of DevOps ๐Ÿง‘โ€๐Ÿ”ฌ:
With new apps and software being built everyday on top of the current apps being updated, Docker is a great solution for keeping up with the changing technology.

Being able to build and deploy apps in this day and age is a nice to have.

Want to learn more about Docker???

Check out this Youtube video by Amigoscode - https://www.youtube.com/watch?v=p28piYY_wv8

0
Subscribe to my newsletter

Read articles from Evangelos directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Evangelos
Evangelos

A Software Engineer, all about: Learning Building Sharing ๐Ÿช„