
There is introduce of dokcer in wikipedia :
Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers. The service has both free and premium tiers. The software that hosts the containers is called Docker Engine. It was first released in 2013 and is developed by Docker, Inc.
Docker is a tool that is used to automate the deployment of applications in lightweight containers so that applications can work efficiently in different environments in isolation.
In earlier years, environment configuration was always a difficult problem for developers. After all, every user’s environment is different, so developers can’t know whether the software can run successfully in the client’s server. How to resolve the problem?——How about we just install the software along with its necessary environment setup?
A virtual machine (VM) is a solution that involves installing software along with its environment.

- High resource consumption
Imagine running “a computer within a computer.” Each VM demands its own dedicated slice of your host machine’s RAM, CPU, and storage. Open a few, or run a heavy application, and your main computer will quickly become a “snail,” slowing down to a crawl and making you question everything.
- Slow startup speed
Every time you boot a VM, it’s like starting a physical computer from scratch. The lengthy wait from powering on to reaching the desktop can make you wish for a fast-forward button. You know that impatience when you need something urgently.
- Significant performance overhead
A VM acts like a “translator,” needing to convert your commands layer by layer to interact with the hardware. This introduces an inherent performance overhead. Whether it’s heavy computation, graphics rendering, or file I/O, tasks will generally run a step slower than if executed directly on your host machine.
Docker is another solution that allows you to package and run applications with all their dependencies, including their environment configurations. However, it operates fundamentally differently from virtual machines, leading to significant advantages in several key areas:
- Resource Utilization
Docker containers are incredibly lightweight. Instead of running a full operating system for each application, they share the host’s OS kernel. This means you only package your app and its essentials, allowing you to cram far more containers onto your server than VMs, squeezing every drop of power from your CPU, memory, and storage.
- Startup Speed
Forget waiting minutes for a VM to boot! Docker containers launch in mere seconds – often milliseconds. This lightning-fast startup is a game-changer for developers and operations teams, enabling quicker testing, faster deployments, and more agile workflows.
- Performance
Because Docker containers run directly on your host’s kernel, there’s no bulky virtualization layer slowing things down. This direct access means minimal overhead, giving you performance that’s remarkably close to running your application directly on the bare metal.

In summary, Docker containers offer rapid deployment and incredibly easy migration. You just map the container’s directory to the host, and when it’s time to move, simply copy the entire Docker directory. Furthermore, Docker boasts a massive ecosystem, providing virtually any container image you might need. As the official description states: “Docker Hub is the world’s largest library and community for container images. Browse over 100,000 container images from software vendors, open-source projects, and the community.”

All in all, Docker is genuinely an excellent choice for individual users. It significantly lowers the learning curve, and all deployment processes are standardized; you can effortlessly deploy, stop, and update services with a single command using docker-compose.