文章目录
初始Docker
背景:
我们之前在;linux上安装mysql的会发现这个过程十分的复杂.但这还只是一个mysql.当你想开发大型项目的时候会发现组件较多,运行环境也较为复杂,部署时会碰到一些问题:比如依赖关系复杂,容易出现兼容性问题.开发,测试,生成环境有差异...等等
Docker
的出现解决了这个问题
Docker
如何解决依赖的兼容问题的?
- 将应用的Libs(函数库),Deps(依赖),配置与应用一起打包
- 将每个应用放到一个隔离容器去运行,避免互相干扰
不同环境的操作系统不同,Docker
如何解决? 我们先来了解下操作系统
操作系统的内核与硬件交互,提供操作硬件的指令,但是如果单靠这些简单的指令来开发那是相当难受的,因此开发人员在操作系统内核的基础上加了一个系统应用,这个系统应用封装内核指令为函数,便于程序员开发调用,用户程序也就是基于系统函数库实现功能
例如: Ubuntu
和 CentOS
都是基于Linux内核,只是系统应用不同,提供的函数库有差异
回到前面的问题: Docke
r如何解决不同系统环境的问题?
Docker
将用户程序与所需要调用的系统(比如Ubuntu
)函数库一起打包Docke
r运行到不同操作系统时,直接基于打包的库函数,借助与操作系统的Linux内核来运行
Docker
如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?
Docker
允许开发中将应用,依赖,函数库,配置一起打包,形成可移植镜像
Docker
应用运行在容器中,使用沙箱机制,相互隔离
沙箱机制:沙箱机制,或称沙盒技术,是一种安全技术,用于隔离运行中的程序,以防止程序对计算机系统造成未授权的更改或破坏。沙箱为程序提供了一个受限的执行环境,程序在这个环境中运行,就像孩子在沙盒中玩耍一样,可以自由活动,但不会影响到沙盒外的世界。
Docker
如何解决开发,测试,生成环境有差异的问题?
Docker
镜像中包含完整运行环境,包括系统函数库,仅依赖系统内的Linux内核,因此可以在任意Linux操作系统上运行
总结
Docker是一个快速交付应用、运行应用的技术
- 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
- 运行时利用沙箱机制形成隔离容器,各个应用互不干扰
- 启动、移除都可以通过一行命令完成,方便快捷
虚拟机
虚拟机(virtual machine) 是在操作系统中模拟硬件设备,然后运行另一操作系统,比如在Windows系统里面运行Ubuntu系统,这样就可以运行任意的Ubuntu应用了.
区别
虚拟机中运用了Hypervisor
这样一个技术模拟了硬件然后再装上另外一个操作系统,启动虚拟机跟开机一样重启操作系统,这个速度显然是不如Docker,因为docker是一个进程.
总结
Docke
r和虚拟机
的差异
- docker是一个系统进程;虚拟机是在操作系统中的操作系统
- docker体积小、启动速度快、性能好:虚拟机体积大、启动速度慢、性能一般