容器vs虚拟机
- 什么是虚拟机?
虚拟机为用户提供一个完整的系统镜像,常见的虚拟机有VMware、VirtualBox等。虚拟化技术可以为每个用户分配虚拟化后的CPU、内存和I/O设备等资源,但是为了能运行应用程序,除了需要部署应用程序本身及其依赖,还需要整个操作系统和驱动。 - 什么是容器?
容器是一种轻量级、可移植的为应用程序提供了隔离的运行空间。每个容器内都包含一个独享的完整用户环境,并且一个容器内的环境变动不会影响其他容器的运行环境,可以使得应用在任何地方以相同方式运行。 - 容器和虚拟机的区别?
容器是对应用层的抽象,它把应用程序的代码和相关依赖打包在一起执行,多个容器可以在同一台物理机上互不影响地独立运行,并且共享操作系统内核,启动非常快,占用空间非常少,一般也就几十兆。
虚拟机是物理硬件上的虚拟化,系统管理程序使虚拟机能够运行在同一台物理机上,但是每台虚拟机必须包括一整套操作系统、应用程序和各种依赖哭,启动非常慢,占用空间也是GB级别的。
开发人员通常使用多种服务构建和组装应用,比如分布式消息队列 Kafka、分布式缓存 Redis 、分布式文件系统 HDFS 或者Spring Cloud 等等。复杂应用系统的相应部署环境也变得非常复杂,可能会部署到不同的环境中,比如开发服务器、测试服务器和生产服务器,服务器也可能是虚拟服务器、私有云或公有云等。
所以如果要在编写代码时考虑不同的运行环境,对开发和运维人员来说,都是艰巨的任务。所以容器就很好的解决了这个问题。举个例子,在轮船运输中,运输不同的物品有不同的要求,比如易碎的东西不能被压在下面。集装箱的发明解决了这个问题,无论任何东西,放在集装箱中,在整个运输过程中是密封的,可以被高效的装卸、重叠和长途运输。
Docker将集装箱思想运用在了软件的打包上。
这里总结几点很早之前的疑问。
- Web容器和Docker容器,同样是容器,它们区别是什么?
我们知道, Tomcat是可以运行在Docker上面的,所以,这两个容器的含义就必定不一样,经过查阅资料,这么一句话说的很有道理。Web容器,我们知道Tomcat服务器内部也有叫Servlet容器的,它的任务是管理Servlet的生命周期。 - Apache服务器和Tomcat服务器有什么区别?
Apache是Web服务器(静态解析,如HTML),Tomcat是Java应用服务器(动态解析,如JSP)。简而言之,应用服务器处理业务逻辑,web服务器则主要是让客户可以通过浏览器进行访问,处理HTML文件,web服务器通常比应用服务器简单。
WEB服务器:Apache、IIS、Nginx(也是反向代理服务器)
应用服务器:Tomcat、Weblogic、Jboss
具体参考文章web服务器和应用服务器的区别与分析
Docker介绍
Docker优势
- 在开发方面的优势:
开发过程中可能要不断的重复修改和设置开发环境,Docker会使得这一过程自动化,让开发人员关注代码质量。比如,使用Dokcer后不必单独安装和配置数据库,也不需要担心版本语言冲突问题。 - 在运维方面的优势:
实现自动化的编译、打包、测试和部署,并且能够瞬间伸缩和扩展。 - 在容器和虚拟机方面的优势:
Docker使得容器和虚拟机结合(DockerMachine实现了容器和虚拟机的有效结合),使部署和管理应用更加灵活。我们在虚拟机中启动一个容器,这里的虚拟机并不是由Docker控制的,而是通过现有的虚拟机还礼设施来控制。
Docker架构
Docker主要包括三大组件:
- Docker后台服务(Docker Daemon):长时间运行在后台的守护进程,可以通过命令dockerd交互。
- REST接口(REST API):程序可以用过REST API来访问后台服务。
- 交互式命令行界面(Docker CLI)