技术三观之老黄谈物理机、虚拟机以及Docker

2023-10-13 00:30

本文主要是介绍技术三观之老黄谈物理机、虚拟机以及Docker,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

高效集装箱码头

12月底也是2018年的最后一天,从九月初到机关楼截止到现在,自己真正学的东西也没多少,这正应了一句话,人是容易迷失的动物,身处恶劣的环境会反思,会懊悔,会发誓如果再给自己一次机会一定要好好做人,但真正当上天把好的环境无私地送给你的时候,你又是否能够如之前所说坚守约定,为理想,信仰奋斗到底呢?成功的人,是能够在危亡之际展露惊人勇气的人,是经得起时间,困境考验而始终如一的人。

物理机与虚拟机的渊源

所谓物理机就是一台可以看得到摸得着的机器(个人PC一样是物理机),可以简单的认为就是一台电脑主机。虚拟机顾名思义是借组一种工具虚拟出来的机器,它是不存在的,所以你看不到也摸不着。但是当你使用它的时候,体验却和在使用一台真实物理机一模一样。“石器时代”,我们在部署一个计算机应用的时候,往往会将多个应用部署到一台物理机上,例如JavaWeb应用,我们会将无数的WebApp打包发布到Tomcat的webapps文件中,然后启动软件应用,服务开启。这种部署方式所暴露的最大问题就是应用集中部署,没有隔离,一旦某个应用由于误操作或者其他原因导致服务器崩溃,那么所有应用便不能正常使用,这就是我在之前的博客中提到的老黄概念之一“病态串联”,集中化管理有好处“但牵一发而动全身”,两军交战本应该是利益核心方的冲突,却苦了无辜的黎明百姓,“城门失火,殃及池鱼”,他搞坏了服务器,你就得和他一样不能运行。问题与解决问题往往是并存的,为了不让服务器崩掉,项目经理就想办法了,既然放在一台服务器上机器“受不了”,我们一共有十个应用,那搞他十个服务器不就行了。一旁的技术青年小张正是操营的徐庶,笑而不语。好了就不来“沉浸式”了,如果大家喜欢,我以后会专门来几篇这种有“沉浸式编程”风格的文章。为了解决单体机器的问题,就有了虚拟机技术,我们可以通过虚拟一个拥有自己硬件配置的机器来实现应用的隔离,可能只有一台物理真机但通过虚拟化我们就可以将一台机器虚拟成十个机器,然后将各个应用部署到不同的虚拟机上,这样就算是张三搞坏了服务器自己不能运行了,李四和他没有丝毫关系,也不会受到任何影响,因为李四有自己的机器,自己的软件应用环境。

物理资源的虚拟化Hypervisor

Hypervisor就是上边提到的物理资源的虚拟化技术,他可以将现有的硬件资源充分利用,解决我有三台真机却有十个应用的尴尬局面。这里需要强调几个概念:1.物理真机就是Host宿主机。2.虚拟机又叫客户机(Guest)。3. KVM、VMware以及Xen是Hypervisor的几种具体实现。3.Hypervisor可以直接在宿主机部署(没有安装系统应用),也可以在已安装系统应用的宿主机上部署,我们大部分是在已安装系统应用的真机上实现虚拟化(例如VMware)。理解了上边几个概念之后我再与大家谈谈云计算,去年在北京我和好基友小安同学探讨过云计算,当时我对这一块了解的不是很深,但有几个基本问题我却是明白的,我接触过阿里云,知道云端部署Android后台的基本流程,有过Xshell安装云服务环境的基本经验,知道DNS域名解析和IP的关系,当然曾经我的编程恩师陈老师还让我见过一台报废的服务器,所以我并没有和其他人一样成为一个只会给技术上香叩头的“宗教徒”,技术没有神秘之处,之所以神秘是因为你根本不知他,不懂他。因为一篇新闻看到了大数据,人工智能战胜了人类,某技术多么厉害就觉得自己拥有了优先权,发言权,然后就是高谈阔论,这样的人看似拥有了全世界,实际上却是最贫穷的,哪里贫穷,精神贫穷,头脑贫穷,内心贫穷。好了,回归正题,云计算其实并不神秘(虽然看起来很神秘,好多人以为是一种神秘虚拟的存在,别吓我,没那么玄乎),他就是前边我提到的计算机虚拟技术,只不过这些虚拟机对外开放形成了Paas(阿里的基于平台的对外服务,对了你了解Saas和Iaas吗),你可以通过一些第三方软件操作控制这台人家给你的虚拟机(需要IP,用户以及密码),这样你好像就拥有了一台电脑,一台看不见摸不着的“云计算机”(可以自己安装系统,安装各种软件),请记住你拥有的是一台虚拟机Guest,而不是Host宿主机,Host宿主机在阿里的机房里。可能你还是觉得他玄乎,那你只能动手了,请记住看书和看文章的程序员永远不会是好程序员,不要废话,动手,让那些门外汉去讨论概念吧。

Docker容器来了

图片来自知乎某帖子
前边讲到了虚拟机讲到了通过多个虚拟机实现应用环境的隔离,但如果你用过VMware你就会知道(大学学习RedHat的时候用过)虚拟机是一个什么概念,他就是一个待安装应用的操作系统,而且会占用宿主机的大量内存和资源。回过来想想,我们的目的是实现应用的隔离,这样会不会有点小题大作了,一个应用对应一台启动缓慢的虚拟电脑?我们面向的是应用,而不是机器。这样Docker应运而生,Docker是一个容器引擎,他可以为所有的微服务应用提供运行时的环境,他的沙箱机制类似JVM的跨平台原理,还有类似Git的Pull,Push机制,通过Docker你可以为自己的应用提供一个高度内聚,粒度足够细小的应用运行环境,而这一切都在Docker Registry远端仓库中,你要做的就是敲几行类似node.js环境下npm命令,这些命令就像是maven,gradle中的坐标定位一样会从Docker Registry公有仓库中自动为你进行下载安装。以下就是虚拟机和容器技术的实力对比:
没有对比就没有伤害
孰优孰劣,我不多说。重要概念需要大家牢记,Docker三剑客:容器,镜像,仓库。容器与镜像好比Java中的对象和类,镜像是对容器的抽象预定义,是静态的按照Docker标准打包实现的未运行的应用环境(各种配置文件),容器是已经运行起来的具体镜像。镜像则类似操作系统的用户文件(操作系统包括内核和用户文件),这里指的就是应用运行所需的各种环境(精简的操作系统级以及应用级环境的配置文件)。Docker的三个关键操作:build,ship,run,Docker操作的对象是一种应用运行的环境而不是具体的应用,他管理的容器对应的是各种环境比如数据库需要的环境,Java需要的环境,PHP需要的环境这些环境运行起来就是Docker中的容器,待运行状态就是镜像也可以理解为对应用环境的封装。

容器的方向舵K8S

容器的方向盘
就好比微服务一样,服务多了需要规范化管理于是有了Dubbo,SpringCloud,谷歌的Grpc以及其中必不可少的服务注册组件Zookeeper,服务解耦以及通过消息持久化提供缓存服务的消息中间兔子队列等,容器一样如此,K8S是一个容器集群管理系统,他管理的对象就是各个宿主机上基于Docker创建的无数容器,主要职责是容器编排(Container Orchestration)——启动容器,自动化部署、扩展和管理容器应用,还有回收容器。他主要管理容器的运行状态,并且控制容器与外界的通信,类似的容器管理平台还有像Compose,Marathon,Swarm,Mesos等等,最后附上K8S与Docker的系统结构图:
Docker与K8S

这篇关于技术三观之老黄谈物理机、虚拟机以及Docker的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/199492

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。