Docker 101: Why Use Docker for Software Development?

Updated on | Sign up for learn to code tips

What is Docker? Since its launch in 2013, Docker has become a common tool in DevOps and cloud computing fields. It provides a way to more quickly and easily create, test, and deploy software applications through containers.

In this article, I’ll break down what Docker is, how and why to use Docker, how it’s different from virtual machines (and what those are), plus some resources to help you learn Docker and related technologies.

By the end of this post, you’ll have a good understanding of Docker and know where you can go to learn more about it.

Disclosure: I’m a proud affiliate for some of the resources mentioned in this article. If you buy a product through my links on this page, I may get a small commission for referring you. Thanks!

What Is Docker? 

Docker definition: Docker is a suite of open-source platform-as-a-service (PaaS) tools often used in cloud computing. These tools allow you to create, deploy, and run applications, using something known as “containers.” (Fun fact: Docker’s logo is a whale that looks like a cargo/container ship!)

docker containers

📦 So what are containers? Containers let developers package up all of the elements of an application/program known as “dependencies” (e.g., host, code, operating system, libraries, system tools, settings) and deploy it as one single container or package. Everything that’s needed to run the application is self-contained. In other words, the application will work anywhere — from a developer’s computer to a physical data center to a staging/QA environment to production.

Using containers is particularly important for professionals who use Continuous Integration/Continuous Deployment (CI/CD) DevOps methodology. In CI/CD, developers put their code into a shared repository early and frequently, making it faster for teams to deploy code.

What Is the Difference Between Docker and Virtual Machines? 

Containers and virtual machines (VMs) are similar in some ways (they package up all of the dependencies of an application into one), but the way they work is different. 

  • Containers visualize the operating system (OS), while hypervisor-based VMs visualize the hardware.
  • Containers allow you to virtualize many apps on a single, shared OS instance, while VMs virtualize apps on multiple OS instances. (Visual of this below.)
Docker vs virtual machine comparison
Image source: Docker

Because of this, VMs often take up more memory and storage than containers, and are harder to run across public clouds, private clouds, and traditional data centers. 

In short, there’s more to think about with virtual machines than with container tools like Docker.

Start coding now

Stop waiting and start learning! Get my 10 tips on teaching yourself how to code.

Don't worry. I'll never, ever spam you! Powered by ConvertKit

Why Use Docker?

If you’re going to create applications, why use Docker to do it? Let’s look at some of the perks.

Benefits of the Docker platform

Developers and teams who use Docker can enjoy benefits like these:

  • Code gets shipped faster
  • Portable and efficient 
  • Ability to run anywhere
  • Makes the development process more agile and responsive
  • Smaller footprint than virtual machines
  • Standardizes environments from development to production
  • Better security since every application is isolated
  • Easy to modify and update programs
  • Automated container creation

Roles that can benefit from learning Docker

Docker’s popularity has exploded in recent years, to the point where it was Indeed’s #1 fastest-growing tech skill in 2019.

Person on laptop using docker at desk

Docker skills are useful in a wide variety of tech roles, including:

➡️ Here’s a look at the full range of jobs that list “Docker” as a skill!

How to Use Docker 

To create a Docker-containerized application, you start by creating a Dockerfile, which is a text file with instructions/commands that are required to build a Docker image (more on this below). The Dockerfile includes info like programming languages, file locations, dependencies, what the container will do once it runs, etc. It automates the process of Docker image creation.

You then create a Docker image using the Docker “build” utility based on the Dockerfile. A Docker image is a file that contains a set of instructions for what components of the application the container will run and how. It contains executable application source code and the dependencies the application needs in order to run. 

When you run the Docker image using the “run” utility, it then launches an instance of the container.

woman on laptop using docker

After you’ve built a Docker image, you can then share it on Docker Hub, which is a hosted repository service similar to GitHub, where teams can share and manage containers.

Of course, how to use Docker is more complex than this short version, so let’s move onto where to find more in-depth Docker tutorials.

Where to Learn More About Docker

If you’re interested in learning Docker, check out some of the great Docker training resources below. You might also want to consider working towards the professional Docker certification.

📚 Books on Docker (via Amazon)

Note: as an Amazon Associate, I earn from qualifying purchases.

If you enjoy learning new skills college-style with books, check out these titles:

💻 Courses on Docker

Here are some platforms where you can learn Docker for beginners via tutorials and courses!

Start coding now

Stop waiting and start learning! Get my 10 tips on teaching yourself how to code.

Don't worry. I'll never, ever spam you! Powered by ConvertKit

Improve Your Tech Skills with Docker

🐋 As a quick recap: Docker simplifies the process of developing and releasing software through containers. Unlike VMs, it lets you virtualize many apps on a single operating system.

Because Docker is used in so many tech roles and demand is growing rapidly, building skills with these tools can really help you stand out in your tech job hunt. It’s one more thing to add to your arsenal!