大型项目组件较多,运行环境也较为复杂,部署时候会碰到一些问题:
a.依赖关系复杂,容易出现兼容性问题
b.开发测试生产环境差异
a.所有的linux内核系统可以分为两层,内核 上层应用。内核和计算机硬件交互,通过指令交互。
b.系统应用封装内核指令为函数,便于程序员调用
c.用户程序基于系统函数库实现功能
d.ubuntu和Centos是基于Linux内核,只是系统应用不同,提供的函数库有差异。
a.将应用的Libs(函数库)、Deps(依赖)、配置和应用一起打包,形成可移植镜像
b.运行在容器中,使用沙箱机制,相互隔离
b.将每个应用放到一个隔离的容器去运行,避免相互干扰。
a.Docker将用户程序与所需要调用的的系统函数库一起打包,包含完整运行环境。
b.Docker运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行。
将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统。
运行时利用沙箱机制形成隔离容器,各个应用互不干扰。
虚拟机是在操作系统中模拟硬件设备,然后运行另一个操作系统,就可以运行任意的对应版本linux应用。
特性 Docker 虚拟机
性能 接近原生 性能较差
硬盘占用 MB一般 GB一般
启动 秒级 分钟级
服务部署一般选择docker 而不是虚拟机。
docker是一个系统进程,悉尼及实在操作系统中的操作系统
docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢‘性能一般。
Docker是一个CS架构的程序,有两部分组成:
服务端 server:Docker守护进程,负责处理Docker指令,管理镜像容器等
客户端client:通过命令或者RestAPI 向Docker服务器发送指令,可以在本地或远程向服务端发送指令
镜像Image:将程序及其依赖、运行环境一起打包在一起,称为一个镜像。
容器Container:镜像中应用程序运行形成的进程就是容器,DOCKER会给容器做隔离,对外不可见。
镜像是只读的,可以基于镜像创建容器,不会对别的容器产生影响
Docker和Dockerhub
Dockerhub是一个Docker镜像的托管平台,这样的平台称为Docker Registy。
略。
原文:https://www.cnblogs.com/timewarlock/p/15309379.html