What is Docker?
Docker is an AMAZING tool that you just can't miss. It's EVERYWHERE!
So here's everything you need to know about docker, in ONE blog. Don't worry - I'll keep it very short and concise ⚡
I'll walk you through the concepts - Containers, Images, etc. And then we'll write our own
Dockerfile to containerize a very simple python application!
Docker is a way to containerize applications (putting code in boxes that can work on their own). It magically makes a virtual computer, but guess what - they aren't really virtual computers.
Containers are boxes that have no host Operating system, so they are independent of the device they run on.
Think of it like this - there's a bee that only likes to live in it's own honeycomb, and will not be able to work if it lives somewhere else. You just trap the bee in a box that looks and feels exactly like it's honeycomb. That's containerization.
Containers are made using
Docker Images are like templates - a craftbook that has everything to make the craft. Or, in other words, it contains a set of instructions for creating a container.
But how do you make these images (to later make containers) ?
This is done using Dockerfiles.
A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image.
Ok, let's make a Dockerfile together.
Now, we'll start with docker HANDS ON!
Quickly download docker on your device: https://www.docker.com/get-started
Now that you have it, let's write a simple flask application and containerize it!
Now, even though this might be very basic, it actually needs a lot of things to run:
- Python 3.9
- Flask (running
pip install flask)
- exposure to port 5000
Some programs might only run on specific Operating systems - like Windows-only or Linux-only stuff.
All these problems are solved by writing a simple dockerfile, that sets up a docker image for us.
So you need to make a file called
Dockerfile (exactly, without any file extension)
Here is a walkthrough:
- use FROM to use python base image
- use COPY to copy the app.py file into the container
- use RUN to pip install flask
- use CMD to run "python app.py" when container starts
minor correction : the file should be named Dockerfile instead
Now, build to docker image using the
docker build command and then run the image by using the
docker run . command.
You can also use the
--tag to give a name to the image and make it easier for yourself to run later
docker build --tag flask . docker run --name flask -p 5000:5000 flask
--name is the name of the container to be run (which i'm naming flask), -p sets the port of the docker CONTAINER to your machine, so you can see your app on
localhost. Finally, the
flask at the name is the name of the image to be run.
That's pretty much it!!!
use the "docker ps" command to get a list of running containers,
"docker ps -a" to get list of ALL containers
"docker images" to get list of images
"docker --help" to get list of all commands
Mess around with the commands, they are self-explanatory