docker_practice/why_use_docker/README.md

23 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#为什么使用Docker
为什么要使用docker
作为一种新兴的虚拟化方式docker跟传统的虚拟化方式相比具有众多的优势。
docker的基础是Linux Container LXC
首先我们来看Linux Container的发展过程。
我们知道传统的虚拟机通过在宿主主机中运行hypervisor来模拟一整套完整的硬件环境提供给虚拟机系统。虚拟机系统看到的环境是可限制的也是彼此隔离的。
这种直接的做法实现了对资源最完整的封装,但很多时候往往意味着系统资源的浪费。
例如以宿主机和虚拟机系统都为Linux系统为例虚拟机中运行的应用其实可以利用宿主机系统中的运行环境。
我们知道在操作系统中包括内核、文件系统、网络、PID、UID、IPC、内存、硬盘、CPU等等所有的资源都是应用进程直接共享的。
要想实现虚拟化除了要实现对内存、CPU、网络IO、硬盘IO、存储空间等的限制外还要实现文件系统、网络、PID、UID、IPC等等的相互隔离。
前者相对容易实现一些,后者则需要宿主机系统的深入支持。
随着Linux系统对于名字空间功能的完善实现程序员已经可以实现上面的所有需求让某些进程在彼此隔离的名字空间中运行。大家虽然都共用一个内核和某些运行时环境例如一些系统命令和系统库但是彼此却看不到都以为系统中只有自己的存在。这种机制就是Container容器
而docker正是在容器的基础上进行了进一步的封装让用户不需要去关心容器的管理使得操作更为简便。
下面的图片比较了docker之所以能胜出传统虚拟化方式的原因。
![传统虚拟化](../images/virtualization.png)
![Docker](../images/docker.png)