Docker的核心思想:隔离!沙箱机制
一、Docker优点
虚拟机技术:虚拟出一条硬件,运行一个完整的操作系统,然后再这个系统上安装和运行软件
缺点:资源占用多,冗余步骤多,启动很慢
Docker:容器内的应用运行在宿主机上,没有自己的内核,也没有虚拟硬件,所以比虚拟机轻便,而且每个容器之间是互相隔离的,每个容器内都有一个属于自己的文件系统,互不影响。
在Docker中,打包镜像,发布测试,一键运行,可以更便捷的升级和扩缩容!
比如说一个项目,用到了SpringBoot 1.5,Redis 5 ,Tomcat 8,如果现在要给tomcat升级,那我需要给tomcat升级之后,再结合SpringBoot 1.5和Redis 5进行联调测试,非常麻烦。可是如果用了Docker之后,把整个项目打包为一个镜像,只需要把这个包升级一下,然后运行就可以了!
另外,Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例,服务器的性能可以被压缩到极致!
总的来说,Docker的优点有:
1.应用可以更快速的交付和部署。
2.更便捷的升级和扩缩容.
3.更简单的系统运维
4.更高效的计算资源利用
Docker为什么比虚拟机要快?
一张图就明白了。
首先Docker比虚拟机有着更少的抽象层,其次Docker利用的是宿主机的内核,而vm需要的是Guest OS,所以说新建一个容器的时候,Docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。
也就是说,虚拟机是要加载Guest OS的,属于分钟级别,而Docker是利用宿主机的操作系统,省略了这个复杂的过程,是秒级的,所以更快!
二、Docker组成
镜像(image):
Docker镜像好比是一个模板,可以通过这个模板来创建容器服务!比如Tomcat镜像,run之后,可以创建一个tomcat01容器,再run,可以创建tomcat02容器。。。也就是说,一个镜像可以创建多个容器,最终服务运行或者项目运行就是在容器中的!
容器:
Docker利用容器技术,独立运行或者一个组的应用,容器是通过镜像来创建的,可以执行启动,停止,删除等等基本命令!
仓库:
仓库就是存放镜像的地方,仓库分为共有仓库和私有仓库!
docker中执行run的流程图:
三、run流程和Docker原理
run的流程:比如执行 # docker run hello-world
命令时,
内部流程如下:
Docker是如何工作的?(底层原理)
Docker是一个Client - Server 结构的系统,Docker的守护进程运行在主机上,通过Socker从客户端访问,DockerServer接收到Docker - Client的指令之后,就会执行这个命令!