What is delivery in the software industry?
Let’s go back to our IKEA example. Imagine you have just made a new table made up of different parts. Delivery would mean the parts are packaged in boxes and available on shelves for customers to pick up.
Deployment would be the moment the customer opens the boxes at home and assembles the furniture in their living room.

Different software can be packaged in different ways. For example, you have already encountered packages when using npm (the p stands for packages 😉). With npm packages, we usually put a set of JavaScript files in the same box so other developers can use them in their project.
But when you run a large application, you need more than a bunch of files. You might need environment variables, specific scripts, databases, and much more. On top of that, the computer you run the command on can change how it behaves: Windows and Linux work differently, and different versions of Node.js can behave differently. So how should you package software like this?
Let’s go back to our table. Imagine you have a robot at home that knows how to assemble the furniture. The problem is that it only knows how to do it in your living room. How would you make it work in someone else’s house?
One solution would be to recreate an exact copy of your living room in your friend’s house. You would reuse an existing room and build a smaller room inside it that looks as close as possible to yours. Then the robot can work.
This is tedious. It means building new walls, planning the space, and making sure your friend has a big enough room. If you update your robot and need to change the room, your friend would also have to make the same changes.
Another solution would be to literally ship the room. You would make a copy of your room with the robot inside it and let anyone use the copy anywhere they want.
In the software world, we ship a self-contained package, or a container, that includes everything needed to run an application anywhere:

Packaging software
Docker lets you package your application together with everything it needs: the operating system, the right version of Node.js, environment variables, scripts, and any other tools. This package is called a container image. When you run it, it becomes a container - a lightweight, isolated copy of that environment running on any machine. It does not matter if the machine runs Windows, macOS, or Linux. The container always behaves the same way because it carries its own "room" with it. This is why developers say Docker solves the "but it works on my machine" problem. You build the image once, and anyone can run it anywhere.
Docker containers were inspired by the real world, where most cargo is delivered in a standard-sized container that is easy to handle and transport.

AI generated image of containers in a seaport
Before Jumping into Docker, watch the following 15 minute video to understand what is a virtual machine and how it works.
https://www.youtube.com/watch?v=mQP0wqNT_DI
Finding a simple, informative video about Docker can be challenging without going too deep. This one explains it really well.
https://youtu.be/_dfLOzuIg2o?si=48bKvKnnJuWEyT3M&t=19
Key takeaways from the video
container and image. An image is like a blueprint or template for creating multiple containers of the same application. You can compare this to classes and objects: an image is like a class, and a container is like an object of that class.<aside> 💭
Watch the video on YouTube. Stop at the “Layers” section at 5:34. Watching until the end is optional, but feel free to continue if you are interested.
</aside>
Docker Core Concepts Every Developer Should Know
Docker is large and complex, so it is easy to get lost in technical terms. In the Core program, we will focus on the main concept of Docker and learn how to run a container. More advanced topics will be taught in some specialization tracks (Data, backend and cloud).
Will cover in the core program:
✅ What is Docker ✅ Installing Docker ✅ Running a container
Out of scope for the core program ❌ Creating new images ❌ Dockerfile ❌ Docker compose ❌ Networking ❌ Volumes ❌ Deploying a container ❌ Kubernetes
The HackYourFuture curriculum is licensed under CC BY-NC-SA 4.0 *https://hackyourfuture.net/*

Built with ❤️ by the HackYourFuture community · Thank you, contributors
Found a mistake or have a suggestion? Let us know in the feedback form.