Docker: About Docker
It is hell when different applications are dependent on different Opertating Systems and different library versions. Setting up these environments to be compatible with each and every application is very difficult. Docker uses "containers" to make it easy to deploy applications and setup environments. The goal of containers is for them to be immutable, meaning if there are changes required then a new container must be created. This immutable infrastructure gives us consistency and reliability. Containers are similar to virtual machines in the idea that you deploy your applications to them, but there are some key differences and benefits of using Docker.
- Isolation: Each container has its own processes, network and mounts. If an application goes down, it does not impact other applications.
- Dependency Heaven: Containers allow you to pack your application with its dependencies. Therefore developers are assured the application will run on production as it does on their dev environment. This creates confidence in deploys meaning developers can deploy more regularly and be more agile.
- Fast spin up: Since Docker shares a kernel and can share application libraries it allows you spin up new instances very quickly.
- Smaller in size: A VM needs an entire seperate OS instance installed on each VM but containers do not, making them very light weight.
- Fast Setup: The docker store has thousands of containers ready to go. A developer does not need to install anything to his dev environment to get a technology working on a container.
- Dockerfile: Contains commands which will create a docker image.
- Docker image: Is the blue print which will create instances on containers.
- Docker container: Is an image instance with your application running as a process. Many containers can be instantiated from the same image.
- Registry: Images can be found at registries like dockerhub.
Docker Resources and tools
- Docker Hub - Docker's Image Repo
- Docker Docs - Documentation on how to use docker
- Play with Docker - An online VM to play around with docker containers. It gives you the ability to spin up multiple nodes each with its own instance of docker.
- Portainer - A GUI which makes working with Docker easier. Setting up portainer is as easy as running it's container and navigating to its url.