江苏省建设执业中心网站,初中学历可以学室内设计吗,腾讯cos wordpress,什么是网络营销?请举几个例子说明可能很多人听说过docker#xff0c;也可能有很多人用过#xff0c;但是其中的一些细节#xff0c;可能不是很清楚#xff0c;还有一些人#xff0c;像我一样#xff0c;并不知道docker#xff0c;也没有用过#xff0c;刚好最近一个大神朋友比较有空#xff0c;让他写… 可能很多人听说过docker也可能有很多人用过但是其中的一些细节可能不是很清楚还有一些人像我一样并不知道docker也没有用过刚好最近一个大神朋友比较有空让他写了一篇普及文章希望能解答像我这样小白的疑问。作者Xx小编了解到很多同学听过docker认为docker是个高大上的东西但是不清楚为何要使用docker通过本文可以从入门的角度了解为何要使用docker。我们先看一个简单的从硬件到软件的层次示意图最底层是硬件最上层是应用软件OS负责硬件管理并衔接软硬件。 有部分同学还玩过虚拟机其软件示意图如下在host os上将硬件虚拟化提供给多个guest os使用举个通俗的例子我是个苦逼码农口袋不太鼓只有一台PC想要学习下linux但是PC现在是win10系统那我们在win10系统下用vmware安装个linux的虚拟机或者安装几个虚拟机都可以只要电脑CPU、内存、硬盘配置能抗住每个linux虚拟机有个root用户从全局看就是多个root用户在使用同一台电脑但是对于1个root用户而言他拥有整个电脑所以虚拟机是将电脑的硬件资源虚拟化实现多用户对同一硬件资源的共享提升硬件利用率。在此例中win10就是host oslinux是guest osVMware负责提供硬件虚拟化能力。 基于上述的知识引申出docker顾名思义docker就是个容器这个容器里盛放的是应用不是虚拟硬件资源而是实现软件资源的虚拟化说白了就是对os软件环境的虚拟化是为了解决用户多个软件对环境的依赖。注意这点虚拟机是对硬件的虚拟化是解决多个用户对硬件资源的依赖举个例子还是延续上面的例子有多个linux虚拟机假设我要在linux上安装软件A和BA和B都依赖一个名为C的库但是A软件比较挫依赖1.0版本的C软件但是B软件很新必须依赖10.0版本的C软件当然我们可以在liunx虚拟机中同时安装1.0版本和10.0版本的C软件但是会引发很多的软件冲突甚至如果C软件根本就没考虑高低版本之间的共存同时安装两个版本的C甚至都无法运行这时候怎么办将A和B软件的运行环境隔离有两种方式第一种就是A和B分别安装在不同的虚拟机中这种方式不是本文重点第二种就是在同一个虚拟机中采用2个docker容器把A、B软件的运行环境分离。在容器1中安装A软件和1.0版本的C软件在容器2中安装B软件和10.0版本的C软件。容器1和容器2最终都都通过docker软件调用linux的os接口。软件层次如下图所示这个图比较复杂虚拟机VM个数可以为n个n是由用户个数决定的但如果只有1个用户可以只用1个vm。 实际如果只有一个用户那么也可以不需要虚拟机vm直接在host os上安装docker构造多个容器来隔离应用A和应用B的运行环境如下图所示 从这两个图看来docker就是个提供软件环境虚拟化的软件并没有限制是在host os还是guest中使用至于你为何要使用docker那就是隔离软件应用。最后使用docker还能够很方便的发布image等等但这些都是在使用docker以后的副作用好的副作用归根结底是要明白为什么要使用docker。