通俗易懂的告诉你容器是什么

838 阅读4分钟

「这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战」。

容器已经兴起了这么多年,不懂容器技术简直说不过去了。

我计划写一系列的文章,系统的介绍Docker、K8S的概念,特点,使用。

和我一下开启容器学习之旅吧~

明确概念

  1. Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。

  2. Docker包括:镜像(Image)、容器(Container)、仓库(Repository),后面会重点介绍。

  3. K8S,全称kubernetes,是基于容器的集群管理平台,可以先简单理解为是管理容器的:可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

891c7ef236672e8e146640d09589cf71.jpeg

为什么要学容器

不管是Docker还是K8s,都是目前的主流技术,而且各大云厂商都基于容器技术进行封装,提供了相关服务,我们能很方便的上手操作。

掌握了docker和k8s,我们就能告别臃肿的虚拟机,能够一次构建,四处部署、能够动态扩缩容、能够无人值守等等

容器是什么?

首先我们想一下现实生活中的容器是什么呢?

装东西用的都可以称为容器,比如“瓶子”、“箱子”、“水杯”、“集装箱”等等。

我们再想一下容器的作用是什么?说白了就是“装东西”,为了方便我们搬用。

比如把水装到瓶子里,我们只要拿好瓶子,就能轻轻松松的把水带到任何地方。

25aaada7de686f66bb2a4a16ed7ac077.jpeg

计算机世界里的容器概念也一样,它的作用也是“装东西”,只不过不是装水了,而是装:代码、环境、运行时、配置文件、系统文件、设置等等。

我们可以简单理解为:保证程序运行的对象都可以装到容器中。

容器的作用

让我们能够只关注应用程序本身,不需要关注应用程序运行的环境和系统等,让环境和系统可以复用。

容器技术的特点

  1. 轻量化:只打包必要的Bin/Lib
  2. 方便移植:一次构建,随时部署
  3. 秒级部署:部署速度非常快,我们可以通过配置yaml文件设置配置参数
  4. 弹性伸缩:动态扩容,新的技术思路解决高并发问题

容器的强大之处

分享一下我的真实案例:

我做过的项目比较多,但是开发环境和框架基本是一样的,都是LNMP环境,PHP开发语言,Laravel框架开发。

当我接到开发第二个项目的需求时,我就有意识的去研究怎么减轻部署环境的工作量,我当时找到的办法是:不管阿里云还是腾讯云都有自定义镜像的功能。

我就使用云厂商的自定义镜像功能,需要2步:

  1. 把LNMP开发环境、代码、框架。Nginx配置等等制作成自定义镜像
  2. 在开发新项目申请新的服务器时,选择我制作的自定义镜像,这样当我服务器启动的时候就直接可以开发新项目了。

注意,我上面一直在提镜像这两个字。镜像是什么呢? 我的理解就是,类似我们按照电脑时的系统盘,镜像盘,是一个文件包,把我们的配置文件,系统环境等等进行打包,支持我们换一个机器进行安装。

我抛出一个问题,来证明容器的强大之处。

比如我的项目A使用的CentOS系统,我的项目B因为种种原因需要使用Ubuntu,我前面提到的自定义镜像能怎么解决这个问题呢?

答案是: 自定义镜像不支持(在云厂商不能修改系统,即源镜像依赖的是什么系统,基于自定义镜像部署的服务器就是什么系统。)但是容器技术可以。

引用查资料时一位大佬举得例子: 容器技术就像集装箱运载一样,我把货物一辆兰博基尼跑车(好比开发好的应用APP),打包放到一容器集装箱里,它通过货轮可以轻而易举的从上海码头(CentOS7.2环境)运送到纽约码头(Ubuntu14.04环境)。而且运输期间,我的兰博基尼(APP)没有受到任何的损坏(文件没有丢失),在另外一个码头卸货后,依然可以完美风骚的赛跑(启动正常)。

今天我们初步了解一下Docker、容器;

下一篇重点介绍K8S。 关注我,下一篇再见。