|
微信云托管趣味讲解:Docker、镜像、容器的那些事-绍兴微信小程序开发为你呈现时间:2022-05-06 什么是Docker?无论你是没印象,还是仅仅听过没用过,都需要来补补课啦!这是一个基础点,要考的。 Docker 是用 GO 语言开发的应用容器引擎,基于容器化、沙箱机制的应用部署技术,说白了,Docker 是一个强大的工具。 既然是个工具,一定是听令行事,指令是我们能操作它正确工作的基础,可以通过3种方式来实现: 那么,Docker 具体能做什么事? 指令 -> 镜像 ( 项目+基础镜像 ) + Docker = 项目镜像 微信云托管 / 服务器 -> 容器 项目镜像 + 容器 = 项目部署 正确使用 Docker,理想的效果是:开发者只需要提供项目的代码,经过 Docker 就可以为你的项目搭建配置好运行环境所需要的一切东西。总之,如果能熟练掌握 Docker 工具,就能够把镜像和容器玩的非常溜。 上面引出来两个概念,第一个是镜像,第二个是容器,我们将在下文慢慢展开。 什么是镜像?这是一个自计算机诞生就始终伴随的概念,例如 Windows 系统的 ISO 装机盘,其实就是镜像的一种形态,镜像是固化的、未运行的,但又始终保持运行逻辑的一堆存储。 当镜像进入到运行环境中,比如操作系统 ISO 装进一台笔记本,就具备运行的实例了,笔记本的计算性能越强,发挥的作用也越大。 前文讲到,Docker 根据指令生成镜像,然后再根据镜像生成运行的容器实例。 Docker 是构造镜像的一把好手,而且非常懂得众人拾柴火焰高的原理:Docker 在构建镜像时,可以依赖一个父镜像作为底层镜像一起打包,从而构建成一个全新的镜像。而这个被用作依赖的父镜像,就是基础镜像。 因此,在配置项目 Dockerfile 创建镜像脚本之前,需要先确立一个基础镜像。
比如,上图中引入了 Node 的基础镜像,这个镜像拥有我们运行 Node.js 程序所需的资源。 基础镜像存在的地方被称为仓库,类似于我们代码托管的仓库或者 npm 仓库。 仓库里有各种运行环境系统和框架语言的镜像,满足各种项目的运行条件,例如你要运行 Python 项目,就需要在仓库中引入 Python 有关的镜像。当然你也可以制作自己的镜像只用于自己使用,Docker 作为工具同样可以轻松做到。 什么是容器?还是从 Docker 讲起:Docker 根据镜像生成运行的容器实例后,容器就变成了一个可运行的实体,能够通过一系列的手段感知它的存在和生命力。 而从镜像到容器的过程,类似于 class 类 new 了一个对象,Windows 等操作系统被安装到一台电脑上。 想必很多开发者都有维护服务器的经验:给一个已经调试好软件和网络的服务器系统打一个镜像,存个盘,随后在其他服务器上直接安装和加载存盘,就可以无需再走一遍“开局打怪”的老路了。 Docker 镜像和在服务器中自行打的镜像类似,不同的点在于自行打的镜像是运行在服务器中,或者分拆的小虚拟机中;而 Docker 的镜像需要运行在一个“沙盒”环境中,这个“沙盒”环境所依赖的就是容器化技术。 总结一下,容器就是一个镜像运行在一个特制的环境中而对外的整体。
容器和服务器有什么区别?在互联网飞速发展的过程中,服务器在形态上的发展从未停止过,我们来通过一个「全家住房需求」的例子,生动讲解一下服务器形态乃至云计算的发展史: 1、自有物理建设(自有服务器实体):一开始大家都是自己搞几台服务器自己维护,通常一停电就全完的那种。 举例:你自己盖了一个别墅,兼顾物业管理 2、物理托管(托管服务器实体):去保养和巡检这实体的东西,成本很高,所以就有了服务商来帮忙托管,找个优质的地方。 举例:你自己盖了一个别墅,雇人来负责物业管理 3、IaaS 基础设施即服务:有需求就会有租赁,买不起服务器的话,可以向服务商购买服务器资源,云计算初具成型。 举例:没钱自己盖别墅,有钱买一层小高楼,自己装修 4、PaaS 平台即服务:我服务器都不想管了,还要自己处理服务器操作系统和软件,直接给我一个可以运行项目的资源就行了。 举例:买一层小高楼或者一间房,精装修拎包入住 5、FaaS 功能即服务:一个核心功能不想做,引入别人提供的服务,然后自己写点东西把这个给做了。 举例:家里有人比较挑,要个风水好的,先安排住酒店 6、SaaS 软件即服务:我代码都不想写了,引入一个软件就把这个事给办了,你就说能不能吧? 举例:全家直接住酒店 直到现在,如何提供更受欢迎的资源依然是云厂商一直在探索的议题。以上几种状态始终没有消失,每一种都有自己情有独钟的用户,用户关心的诉求点不同,决定了用户在那个状态层面。 容器化技术, 以及 Docker 的出现,其实都是在改善 IaaS 中的服务器维护处理所带来的弊端,比如运行环境不一致、网络配置繁琐,虽然有针对的运维工具可以减小这类压力,但多多少少要付出一些成本。 容器技术,本质上就是在服务器系统上铺设一个平台,直接控制和管理底层计算和存储资源,上层隔离出运行环境供开发者的项目镜像运行。 好比一个公司买下了一个大的厂房后,分隔出很多小的房间,给每个房间接入水电,然后统一一些标准,再租赁出去。 所以,在开发者的角度,如果无需关心服务器的运行,那么只需要关注两件事: 1. 项目镜像的打包; 2. 定义如何管理分隔容器和处理资源。 云托管和容器服务有什么区别和联系?容器编排技术和工具的出现,直接将服务器变成了可操作的模块,开发者只需要操作控制面板就可以指挥服务器进行容器化的步骤了,真正做到了统一管理。 因为有统一的容器化,所以也不用担心服务器运行环境差异和网络配置等问题。相当于给你一个遥控装置,可以用来创建出很多容器,然后按照实际使用资源付费。 但并不是所有开发者都对容器编排、配置等游刃有余,好比开车学驾照,失误压线导致考试未通过的事时有发生。 那么,如果不会开车,但我想要坐车出去玩,怎么办? “代驾”应运而生。 容器服务 + 常用数据库 + 自动扩缩容 + + 云生态 + 微信生态 + = *请在 PC 端访问和使用 微信云托管优惠支持微信云托管推出企业激励计划,万元补贴、专家级迁移服务、腾讯云官方流量曝光等,助力企业更低成本享受云原生带来的极致体验。 长按识别二维码报名 关于微信云托管,使用过程中若有问题或建议,欢迎来到微信开放社区 #微信云托管 专区一起交流讨论。 |