谢邀~
我们单位最近在推docker,已经在开发测试环境使用(稍显落后),下面我就谈谈自己的Docker的理解,以及Docker和虚拟机的区别。
虚拟机
先说说什么是虚拟机:在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。
说起来有些绕,那么我们看看虚拟机的架构图,就容易理解了。例如我们要在一台物理机器运行三个Java项目,彼此之间隔离。
从下往上看,解释起来其实很简单:
最下面的一层就是物理机,可以是服务器,设置是一台个人电脑;
电脑上需要安装操作系统,比如我们安装了win10的操作系统;
再往上就是虚拟机软件了,比如我们常用的VirtualBox、VMWare,它们的作用是模拟计算机硬件;
继续向上,就是虚拟机模拟出来的操作系统了;
在虚拟的操作系统中,安装所需的软件、组件等。比如我们需要在虚拟操作系统中安装JDK、Tomcat等;
最后就是具体的应用了,例如部署到Tomcat中。
Docker
再说说什么是Docker,找了一句官方的解释:Docker是开源的应用容器引擎。是不是又一头雾水?我们还是先看看Docker的架构图。
依然从下往上看:
最下面两层,概念同上。
往上,可以看做Docker容器的管理器。
依赖和应用都被打包成了Docker镜像。例如,JDK、Tomcat、应用都被打包在了一起,运行在Docker容器里,容器和容器间是隔离的。
这里提示:Linux支持Docker,Windows和MacOS的话,不直接支持(win10专业版好像可以直接支持,不过我都是安装Linux的虚拟机,在上面跑Docker)。
Docker和虚拟机的区别
从两者的架构图上看,虚拟机是在硬件级别进行虚拟化,模拟硬件搭建操作系统;而Docker是在操作系统的层面虚拟化,复用操作系统,运行Docker容器。
Docker的速度很快,秒级,而虚拟机的速度通常要按分钟计算。
Docker所用的资源更少,性能更高。同样一个物理机器,Docker运行的镜像数量远多于虚拟机的数量。
虚拟机实现了操作系统之间的隔离,Docker算是进程之间的隔离,虚拟机隔离级别更高、安全性方面也更强。
虚拟机和Docker各有优势,不存在谁替代掉谁的问题,很多企业都采用物理机上做虚拟机,虚拟机中跑Docker的方式。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
感谢邀请,Docker和NAS完全是两个不同的东西,侧重点不一样。Docker又叫容器,实际上是SaaS的技术,提供的是应用服务。
例如现在企业如果需要部署服务,使用Docker是非常快捷的方法,因为Docker不需要你部署逻辑服务器,也不需要起复杂的虚拟机。虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动慢,而且需要硬件支持
而Docker容器是在操作系统层面上实现的虚拟化,直接利用本地主机的操作系统,因此更轻量。不像虚拟机一样,需要对整个OS虚拟化,Docker虚拟的是Linux内核之上的应用部分,所以启动更迅速,可以到秒级。
如果企业需要广泛部署某个应用,只需要把包含这个应用的镜像在私有云的服务器上基于容器安装启动(你可以理解为我们家庭安装操作系统时的Ghost),那么这个应用就能很快部署。这比建立虚机再安装应用快多了,就类似复制黏贴。
所以很多企业使用Docker快速搭建自己的应用,实现秒级的应用搭建和启动。这是Docker的作用,应用部署。但是Docker应用所需的存储空间是共享的。
而NAS其实是存储服务器,NAS(Network Attached Storage:网络附属存储)按字是基于网络,用于资料存储功能的服务器,因此也称为“网络存储器”。它的作用是管理数据,做到控制和存储分离。NAS可用实现通过网络存取数据,而现在NAS已经从云端走到了家庭,成为家庭的存储利器之一
NAS里面内置一个用于管理的轻量化Linux系统,但是这个仅仅是管理,有的NAS也可用直接作为Linux服务器部署业务,但是这个能力很弱。所以Docker主要是用于应用的安装,而NAS主要是运用于保存数据,这是两个应用方向。
而且正如刚才所说的,NAS的家庭应用已经很普遍了,你就可以认为是一个映射的外挂硬盘,这个应用场景类似于建立一个小型的家庭数据中心,应用场景比容器广泛的多,容器Docker主要还是基于企业部署应用的。
所以简单的理解,Docker的作用是企业快捷的基于物理服务器安装APP提供服务,NAS是提供数据存储,两个都需要
Docker是一个开源容器引擎,将应用以及依赖打包到一个可移植的镜像中,并且将配置脚本化、自动化,实现一键部署、虚拟化和集群化,快捷高效交付应用。
一,Docker核心技术
Docker核心概念:
1)镜像Image,应用和依赖打包生成的文件。
2)容器Container,运行应用的实例。
3)仓库Repository,存放镜像文件的地方。
Docker-compose资源编排,将多个服务和对应的容器组织成为一个应用系统,声明在docker-compose.yml文件中,将这些服务作为一个整体来创建和启动。
Docker Swarm集群管理工具,统一管理组织多个Docker节点,支持动态扩容等特性,集群化部署和管理应用系统,和Kubernetes(k8s)相比,更加轻量,适合较小规模。
二,Dockerfile配置是核心
Dockerfile声明应用和依赖,比如拉取代码、添加运行库、设置数据卷、配置环境变量,等等。
三,Docker镜像构建
1,本地构建
Dockerfile完成后,可以在本机直接运行docker build命令。
2,云服务自动构建
代码托管在Git,配置阿里云容器镜像服务,在提交代码时,自动触发构建Docker镜像。
3,优化构建速度
合理的拆分Dockerfile,可以提高构建速度,比如将很少变化的部分独立出来,配置Dockerfile_base,然后Dockerfile的基础镜像引用它。
四,一键部署
配置docker-compose.yml文件,声明需要创建的服务、镜像、资源,比如环境变量、端口,等等,一键启
姓名:
年龄:
电话: