So you have created your app and now you want to deploy it, but how?
One way is to just spin up a virtual machine and throw your app in there like the good ol' days but this is 2020 and we can do better than that, let's se how.
Let's look at an alternate workflow, you create your app and the you containerize that app and run the container image in the cloud.
If all that didn't make sense don't worry, we will go through each topic one by one.
Think of a container as a box which has your app and all it's dependencies.
Let's pack this box with tape, this packed box is called a container image.
don't get confused with the word container and container image both used interchangeably, if unpacked box is a container the packed box is a container image both are essentially the same thing.
But wy do we need this extra step of creating this container image? what is it helping us achive?
Let's see, say you want to send your newly created app to your friend so that he can test it, but before he can run your app he needs to download all the dependencies your app needs, let's say you made a node.js app and you send your app to your friend and he downloads a different version of node.js than your app was made with and that causes your app to crash on his machine, you can see how this can become a problem in larger teams.
But with a container all your app's dependencies are packaged with it so your friend just needs to run the container image you sent him without worrying about the setup.
One other problem containers help solve is that of scaling, you can just spin up another container image and increase your load capacity, though there are tools that help with this, which we will see in next article.
Containers also provide a sandboxed environment in which you can run your app, the app running inside a container cannot access underlying resources unless explicitly specified.
So to sum it up
- Containers make it easy to share and run applications independent of the platform.
- Provide sandboxing to our app.
- Help us easily scale up our application
Docker is tool used to create and run containers. Docker is one of the most popular tools to work with containers but it's not the only option, i'll leave the research to you.
In the next article we'll be getting started with docker and learn the vocab associated with containers and docker.