To put it simply Docker is basically a way to bundle your project up into one "file". That "file" (called a Docker image) can then easily put and run on any server.
This makes your project very portable and tidies up your project.
Everything your projects needs to run is in the Docker image. The operation system in the right version your project needs, the programming language in the right version, some libraries your projects needs (again, in the right version) and eventually also some special tweaks to the system. Everything will be bundled into the Docker image.
Because everything is in the Docker image the operating system or version of your server does not matter anymore. The server just need to have the Docker daemon installed. (A daemon is a program that is always running and making sure everything is fine with your Docker setup)
If the Docker image is run, it is called a Docker container. If you run your Docker image on a server, the daemon will monitor your now running Docker container, and in case it crashes restart it. This makes your system more resilient against failures.
You can put multiple different Docker containers on your server (until it is not able to handle the load anymore). If you need more resources you can move your Docker containers to a bigger server or spread them out on multiple servers. Docker makes scaling easier.
Your project can be composed of more than one Docker container (ex: one container for the back end app, one container for the front end app, one container for the database)
You can use the same Docker containers for development and production. This prevents errors in production that are caused by having a different version of some software module on the development machine than on the production server.
This way you find problems earlier in the development process, which makes it cheaper to identify and fix problems. It also increases the developer experience and thus saves precious development time.
Docker has been around for quiet some time (Initial release was 2013) and so Docker can finally be considered boring technology, which is a good thing! You should use boring technology!
WunderPreview: Get a live preview environment for every new feature.
Works for every tech stack. 30 days free trial. No credit card required.