在百度百科上看了一阵,专业术语太多,我还是没有真正搞懂。谁可以简单解释一下,比如它到底解决了什么问题?
刚才看了几位大神的回答,可能是我接触太少吧,感觉仍然不是非常清楚。是不是它相当于一个虚拟机,你把软件部署到那个虚拟机上面?性能不是差了很多吗?如果说它利用的还是宿主机器的资源,那么这跟直接运行在宿主机器就没有区别?如果宿主机器缺少它的依赖库,它依然运行不起来。
天蓬老师2017-04-25 09:05:25
docker主要有2大核心贡献和对于软件交付的影响:
2大贡献:
1、封装,将运行环境与代码封装到一个盒子中
2、镜像仓库,将镜像以类似代码仓库的方式分发
软件交付的影响:作为一个IT界“集装箱” 它把整个软件交付的流程和方式都改变了,就相当于 集装箱 一样改变了整个航运、空运、陆运的方式,让生产者产出的产品到最终用户完全一致,无论中途经过多少过程。有了这个核心的“集装箱” 整个生态都围着它打转。
另外与虚拟化相比,虚拟化是硬件与系统的虚拟,而容器是应用的虚拟,它以模块(函数)的方式,通过环境变量(函数的参数)来改变这个虚拟应用的运行状态。同时借助编排工具可以组装非常庞大复杂的服务。
伊谢尔伦2017-04-25 09:05:25
首先docker不是虚拟机!!不是!!不是!!
很多人才把一个docker里面开满了mysql apache 等等东西!这是错误的!
docker是单线程程序,一般一个docker容器只开一个应用,所以请不要把docker当虚拟机用。
其次docker从理论上看,是一个封装的沙盒环境,全部更改在环境中,不影响系统(当然你可以挂载)。
这好比window的绿色软件,免安装,下载即用。
docker你可以看成linux的绿色软件打包器,建立好镜像后可以在任何有docker的机器上运行,不需要一大堆编译啊什么,高速快捷。
好吧ヽ(  ̄д ̄;)ノ如果还是看不懂我认输。。。
phpcn_u15822017-04-25 09:05:25
比如你用的是Ubuntu
,服务器用的是CentOS
,那么此时你要把项目部署到服务器上,可能在环境的配置上就要花费不少的时间了。又或者比如你用的MySQL
,放在以前每次重装一次系统或者换一个环境,你就要把你的环境重装一次,东西越多花费的时间越多。
而使用Docker
,你只需要一条命令,你就可以在你的Ubuntu
上再运行一个“新的环境”,当然这一个环境还是基于你现有的环境的,也就是说实际上共享的还是同一套资源,但是这套环境里面已经有了你需要的东西。
你需要MySQL
,那就安装一个带MySQL
的镜像, 然后启动一个容器。
你需要Redis
,那就安装一个带Redis
的镜像, 然后启动一个容器。
你需要..., 那就..., 然后...。
当然你也可以在别人的基础之上,对容器进行修改后,比如添加了一些你自己的软件或修改配置文件,然后再commit
,这样你就把这个容器制作成了一个镜像,以后你可以用这个镜像创建出N个一模一样的容器。
比如你要学习搭载Redis
集群,那么你可以下载一个Redis
的镜像,然后启动容器,把集群的配置设置好后,提交这个容器生成镜像,再根据这个镜像运行出6个或更多容器,这样一个集群就搭起来了。
而且Docker
占用的资源很小。
習慣沉默2017-04-25 09:05:25
简而言之,Docker能为你做的事情就是:相比其他技术,它能让更多数量的应用程序在同一硬件上运行;它让开发人员易于快速构建可随时运行的容器化应用程序;它大大简化了管理和部署应用程序的任务。
滿天的星座2017-04-25 09:05:25
平时配置环境安装各种依赖然后再跑代码很麻烦吧?依赖安装配置过程中出错的话代码还不一定能跑得起来,而docker就是一个虚拟化工具,能够把整个环境打包成一个镜像然后分发,要用时就把那个镜像拉下来然后运行就好,类似于下载一个虚拟机镜像然后本地运行。