Container and Docker Terminology
Containers and Docker in particularly use the specific terminology. So before we start digging deeper, let's talk about some of the terms such as images. Images, they are the blueprints of the Containers and consequently for the applications as well.
The Containers, that's how you run your images. And the Containers could be easily portable and you could easily replicate them as many times as you wish because each container is based on a particular image.
Docker Daemon or Docker Engine, that's what is running the Containers. And then the Docker Client, typically, command-line client, that's what allows you to build images, to run containers, to stop containers, etc., etc.
The Docker Hub is a special cloud repository. It's official Docker repository for containers. Typically, you can find any official images for all the OS distributions and also some of the softwares such as databases, Node.js as well. And using those images, you can start developing your own images. And the way you develop those images, you write a Dockerfile.
So Dockerfile is a specific instructions of how to what to do, what files to copy, what packages to install, what ports to expose, what volumes to mount, etc., etc. And each Dockerfile line could be also versioned in a way similar to the Git or GitHub, how you have those commands. So this way, you can reuse a lot of parts of your image later for other images.
Docker Compose, it's a special mechanism that can orchestrate, typically for development. We don't really use it for production but it allows you to orchestrate multiple containers easily with just that one configuration file called "docker-compose.yml". So it's a YAML file, a descriptive way to run multiple containers from different images to develop or even maybe test your project. Host, that's your computer.
Typically, we develop on a laptop macOS or Ubuntu. It's possible to do it on Windows 2.0, but you might run into some issues. If you're using Windows 10, that should be better. There is Bash for Windows 10 under a better Client, Better Docker Client as well for Windows 10.