可以用docker代替虚拟机,运行生产服务器吗?

无心冰冷的唇


正面回答这个问题之前,先看看虚拟机和Dcoker的区别。

  • 虚拟机:在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。举例说明:电脑上安装操作系统,比如我们安装了win10的操作系统;再往上安装虚拟机软件,比如我们常用的VirtualBox、VMWare,它们的作用是模拟计算机硬件;这样虚拟机模拟出来的操作系统了;在虚拟的操作系统中,安装所需的软件、组件等。比如我们在虚拟操作系统中安装JDK、Tomcat等;最后就是具体的应用了,也就是把应用部署到Tomcat中。

  • Docker:官方解释是开源的应用容器引擎。用人话解释一下:依然需要现在电脑上安装操作系统, 然后安装Docker容器的管理器,到了这一步,不需要自己安装JDK和Tomcat,而是由开发人员将素有的依赖和应用都被打包成了Docker镜像。例如,JDK、Tomcat、应用都被打包在了一起,运行在Docker容器里,容器和容器间是隔离的。

总结一下虚拟机和Docker的区别:

  • 从两者的架构图上看,虚拟机是在硬件级别进行虚拟化,模拟硬件搭建操作系统;而Docker是在操作系统的层面虚拟化,复用操作系统,运行Docker容器。

  • Docker的速度很快,秒级,而虚拟机的速度通常要按分钟计算。

  • Docker所用的资源更少,性能更高。同样一个物理机器,Docker运行的镜像数量远多于虚拟机的数量。

  • 虚拟机实现了操作系统之间的隔离,Docker算是进程之间的隔离,虚拟机隔离级别更高、安全性方面也更强。

再正面回答一下“Docker可以代替虚拟机运行生产服务器么”?

  • Docker是可以用于生产环境的;但是Docker是有学习成本的,前期要踩不少的坑;
  • 如果没有容器集群管理工具的话,只用Docker的话,没有太大必要(人肉维护?开发和运维都会死的);
  • 虚拟机和Docker各有优势,很多企业都采用物理机上做虚拟机,虚拟机中跑Docker的方式。
  • 总之,要说Docker代替虚拟机还为时过早,至少短期内不会;

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。


会点代码的大叔


这个问题太好了,最近一直在学习docker,刚好昨天才把学习笔记整理出来发布到博客上。首先答案是可以的,具体怎样看我下面回答
  1. 首先说下服务器干嘛的,不就是为您的应用程序做服务的吗,把一个程序部署到服务就可以通过网址访问了。


  2. 那docker是干嘛的呢,也是为应用程序做服务的,是一个容器专门盛放应用程序的。把一个应用放到docker中就可以访问了。

服务器与docker有什么不同?

一个项目开发的过程中是不是经常碰到一个问题,在我这边运行的没问题啊,怎么在你那边运行就有问题呢?然后摔锅

应用部署到服务器上的过程:因为我是做java开发的,就拿一个正常的java项目举例。首先需要在服务器上搭建基础环境:

  • 配置jdk
  • 配置tomcat

  • 配置mysql
  • 配置redis

这只是一个简单的项目的部署前的配置,之后把您的项目打包发送的tomcat,运行即可。那如果有十几个服务器需要部署呢?是不是就要配置环境十多次,那人不是崩溃了。而且还会出现开发那边运行没问题,部署上去有问题的事情。所以这个时候docker出来了。
应用部署到docker上的过程:

  • 开发环境下直接打包成镜像

  • 把镜像上传到docker容器即可

两步搞定,不需要配置复杂的环境。如果有十多个容器需要部署怎么办?直接远程下载镜像即可,是不是很简单。

总结:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。也是闲着比较流行替代服务器的最佳选择


如果您有什么问题欢迎在评论区留言指出


Java公社


docker适合平台统一在linux的大单位用,服务越多越好,比如几百、几千、几万。配合k8s调度和微服务改造、加上自动化运维,能够实现弹性扩容和缩容,达到on demand的效果,典型的用例是互联网内容提供商。

对于一般中小企业,只有几十台服务器的,平台不统一的,投资docker不如虚拟机。

除了不能跨os平台,docker的另一个缺陷是隔离度不够。


ashley


先说答案:可以,但是没有必要。

容器技术是虚拟化技术的应用,使用容器代替虚拟机运行程序自然是可以的,容器在持续集成方面相对虚拟机还有一定的优势,但是如果仅仅是为了用容器而用容器,则没有必要。

容器技术最大的优势是容器编排,可以实现线上服务的无缝扩容,缩容,降级,熔断等自动化操作,极大的降低运维成本。所以,如果不用容器编排,则无须急着迁移。


AndyBears


看系统的要求了。docker不可能完全替代全部,windows服务器不可以,软件系统没有使用docker重新加载的,也是很难的。


分享到:


相關文章: