前言
话说计算机的
“小型化”
发展,历经了大型机、中型机直至微型机,贯穿了整个20世纪的下半叶。同样,伴随着计算机的各个发展阶段,如何做到“资源共享、资源节约
”,也一直是一代又一代计算机人
的不懈追求和历史使命。今日的IT人应该感谢前辈们的付出和努力,没有他/她们,我想难以收获如今“信息爆炸”
的繁荣景象。
其中,资源的虚拟化之路,妥妥是一个百折不挠、值得大书特书的伟大篇章。正因如此,云计算
终于可以站在信息时代发展之巅,顺应历史发展潮流,成为与大数据、人工智能、工业互联网、物联网、车联网等并驾齐驱的信息化名片之一。
那么,博主撇开“云计算”
,暂时不表。今天咱们来聊聊Docker
吧,一个时代的“宠儿”
。
揭秘Docker
一个新事物的诞生,往往会经历一段甚至长期的
“蛰伏期”
。在这个期间,新事物通常会围绕“提出问题——>分析问题——>讨论——>提出方案——>实施方案”
——这个思路发展。
那么,docker
也不例外。它的形象是一艘“满载的大船”
。为什么会这样设计或定位它呢?请允许博主慢慢道来。
先来看看它是哪来的。从来新鲜的、有个性的、有价值的东西,都讲究个“师出有名”
。
Q1:从哪来
Docker
的历史可以追溯到2013年,那时的移动互联网也逐步迈进了“新时代”
,方兴未艾。当年,Docker正如当今的LLM
(Large Language Model)一样,炙手可热,一经问世便注定不凡。只是在开源化历程中,它也经历了很多曲折和困难。谈到这里,博主不禁有感而发:“商业化总是要有的,开源精神也同样可贵。开源不意味着没有商机。比如私有云与公有云之间的分化,同样走出了各自的精彩。”
Docker,一个基于LXC
(Linux容器,Google的杰作之一)的容器,能够从dotCloud公司的一个私有项目,借机完成华丽转身,可以说,“命运掌握在了自己手里”
。
那么,博主总结一句话:Docker是一个有史以来Container
技术的集大成者,同样是站在了巨人的肩膀上,完成它的历史使命。
Q2:干什么
知道了它的来历后,接下来,博主继续带着大家看看,Docker是干什么的。通过它的背景资料,可以理解它的使命和目标是什么。即“Build——>Ship——>Run”
。翻译成一句话就是“build once, run anywhere”
(一次构建,遍地运行)。
1. Build(构建)
一句话,基于Docker的构建原则和规则,建立一套可行的服务(包括所需的各种资源、文件、应用程序等)。
2. Ship(运输)
一句话,快乐的搬运,快乐的“装卸”
,大家都说搬家累,可是Docker却乐此不疲。这个理念是精髓哦。
3. Run(运行)
一句话,选择了新“家”
后,Docker立即开锅掌勺,愉快的干活了。不用关注天气,不用查看导航,更不用花钱。可谓一举多得,所以人见人爱。
且看上图,这是Docker的核心运行机制。基于OS构建自己的Docker内循环,从镜像到容器,再到各种应用,各行其是。总而言之,有章可循不犯错。
这里看几个关键术语:
术语 | 解释 |
---|---|
镜像(Image) | 可理解为一个root文件系统,比如一个操作系统、一个nginx等。 |
容器(Container) | 镜像启动后就是一个容器,一个镜像可启动多次,意味着可创建多个容器。 |
仓库(Repository) | 镜像管理中心,可以是公共的,也可以私有化。 |
Docker 客户端 | 用于和Docker主机进程交互的客户端工具。比如docker命令行或sdk工具。 |
Docker 主机 | 用于执行Docker守护进程或容器的资源。 |
Q3:如何做
掌握了基本的概念后,可以通过下图进行更进一步的理解。简单讲是这么一个步骤:
1. 创建Docker主机
实现对镜像的Pull,Run、Stop、Delete等操作。建立守护进程,与外部交互。
2. 创建和使用镜像
简单打个比喻,镜像是Docker的“水源”
。离开了镜像,Docker就会枯竭,无用武之地。我们可以创建镜像(生产过程
),也可以获取镜像(消费过程
)。
这里的操作,均指向一个仓库,即Docker仓库,当然可以是public,也可以是private。
3. 与Docker主机交互
我们可以借助docker命令行或sdk工具,与Docker主机建立联系。当然是通过守护进程(Docker daemon
)完成一系列动作和指令。比如build、pull、run等命令。
结语
虚拟化没有终点,Docker
遂应时而生,因时而变。为什么它会引人注目,当然离不开它的“轻”
和“灵”
。试想,一艘大船,如何使用才能高效?标准化打包是核心思路,快速的装卸也是胜利之钥。那么,Docker正是依靠此思想茁壮成长。它带来了云计算的蓬勃发展,也促进了互联网向更深、更广、更高的舞台前进。
最后一句话分享:
云原生,从来不是一个口号,更多是一个使命、一种发展的必由之路。
精彩回顾
-
微服务实战系列之云原生
-
微服务实战系列之Filter
-
微服务实战系列之API加密
-
微服务实战系列之Dubbo(下)
-
微服务实战系列之Dubbo(上)
-
微服务实战系列之ZooKeeper(实践篇)
-
微服务实战系列之ZooKeeper(下)
-
微服务实战系列之ZooKeeper(中)
-
微服务实战系列之ZooKeeper(上)
-
微服务实战系列之MQ
-
微服务实战系列之通信
-
微服务实战系列之J2Cache
-
微服务实战系列之Cache(技巧篇)
-
微服务实战系列之MemCache
-
微服务实战系列之EhCache
-
微服务实战系列之Redis
-
微服务实战系列之Cache
-
微服务实战系列之Nginx(技巧篇)
-
微服务实战系列之Nginx
-
微服务实战系列之Feign
-
微服务实战系列之Sentinel
-
微服务实战系列之Token
-
微服务实战系列之Nacos
-
微服务实战系列之Gateway
-
微服务实战系列之加密RSA
-
微服务实战系列之签名Sign