人们在使用虚拟化一段时间后,会发现一系列问题。如,一个人只需要运行一小段程序,跑一个小的进程。为此建立虚拟机显得很浪费,且在迁移服务程序的时候,还需要迁移整个虚拟机。整个过程也是很复杂的。嗯,对了,创建虚拟机还比较费钱耶。
为解决该问题,容器技术应运而生!
本期,我们一起以Docker为切入点,聊聊容器相关知识吧~
01.Docker起源
Docker 的前身是一家名叫 dotCloud 的公司。
dotCloud :主要提供基于Pass的云计算技术服务,具体说来就是与 LXC 有关的容器技术。
作为一家创业小公司,dotCloud 在行业竞争中步履维艰!于是dotCloud 的几个创始人就聚一起想啊想,想啊想,想着想着决定开源!既然养不起了,就把 dotCloud的内部保密程序源代码开放给所有人,让大家一起参与进来养活它·····
2013年3月,dotCloud 的创始人决定将 Golang 编写的 Docker 项目开源!这,不开则以,一开飞天!
Docker 开源项目爆火以后,dotCloud 公司干脆将名字改成了Docker Inc. 。
而 Docker 之所以会火,其主要原因就是区别于当时业界的网红:虚拟机,在资源隔离层面更“轻”、更“灵活”!
总之,我们在这里说了半天的 Docker ,其本身并不是容器,它是创建容器的工具,是开源的应用容器引擎。
02.Docker概述
Docker中文意思:人工码头,而它的logo也是一个鲸鱼背着很多货物。像码头运输货物一样。
ps:我们可以把物理机(宿主机)当作这只鲸鱼,把相互隔离的容器可以看成集装箱,每个集装箱都包含自己的应用程序。
(1)Docker 的优点:
- 轻量级:所有容器在一台机器上共享同一个操作系统内核,这样他们立即开始,并更有效地利用内存。Image 是从分层文件系统的构建,这样他们能够共享公共文件,使得磁盘使用率和 Image 的下载更加高效。
- 开放:Docker 容器是基于开发的标准,允许容器运行在主流的 Linux 发布版和 Microsoft 操作系统作为所有的基础设施。
- 安全:容器使得应用程序彼此隔离,而基础架构同时为应用程序提供了额外的保护层。
(2)容器 与 虚拟机之间的区别:(科普部分,可不看)
Docker是属于容器服务的一种,虽说其本身并不是容器,但其也是创建容器的工具。所以,一起看看容器和虚拟机的区别是什么吧~
容器归根结底也是虚拟化,不过它是轻量级的虚拟化.
通过虚拟机和容器的架构图,来区分两者:
*虚拟机架构图:
每个虚拟机都包括应用程序、必要的二进制文件和库以及一个完整的客户操作系统(Guest OS),尽管它们被分离,它们共享并利用主机的硬件资源,将近需要十几个 GB 的大小。
*容器架构图:
容器包括应用程序及其所有的依赖,但与其他容器共享内核。它们以独立的用户空间进程形式运行在主机操作系统上。他们也不依赖于任何特定的基础设施,Docker 容器可以运行在任何计算机上,任何基础设施和任何云上。
好了,概述部分赶紧结束!不然人都跑光了····接下来,我们进入到理解部分,趣看“Docker”!
03.如何理解Docker
Docker 的三大核心概念分别是:
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
讲个简单的故事:
我来到了海边,想在这里住下了,于是我开始找石头,木材,刀具建造房子,但是住一段时间,我想住深林里了。我又离开海边,在深林里重新开始之前的操作。突然,出现一个精灵,她教我一种魔法,可以复制房子,将它做成镜像放在我的背包里。等我下次想住田间的时候,我把镜像拿出来,直接复制一套房子就好了。
这里就可以简单类比啦:
我的背包就是仓库,镜像就是 Docker 的镜像,复制出来的房子就是 Docker 容器。
本期干货到此结束啦,欢迎点赞关注我们。