应用程序容器化技术广泛用于软件开发和数据分析。 这些技术有助于使应用程序更安全,更易于部署并提高可伸缩性。 集装箱技术的增长和发展可以被视为当今时代最重要的趋势之一。
Docker是一个旨在在容器中开发,部署和运行应用程序的平台。 “ Docker”一词最近已成为“ containerization”一词的同义词。 而且,如果您尚未使用Docker,但同时您正在或将要在应用程序开发或数据分析领域工作,那么Docker当然是您将来会遇到的。
→
第1部分:基础知识→
第2部分:术语和概念→
第3部分:Dockerfile文件→
第4部分:缩小图像尺寸并加快其组装速度→
第5部分:团队→
第6部分:处理数据
如果您还不知道Docker是什么,那么现在您就有机会迈出了解该平台的第一步。 即,掌握了这些材料之后,您将了解Docker的基础知识,并同时准备披萨。
隐喻和Docker
我们经常遇到隐喻。 如果您查看Ozhegov的词典,事实证明,这种隐喻是“一种隐喻的比喻,将一个对象,一种现象比作另一个对象”。 隐喻帮助我们掌握了新现象的本质。 例如,可以将虚拟容器与普通塑料容器进行比较。 通过将我们已知的普通容器的属性与虚拟容器的属性进行比较,这样的比较将帮助您首先了解它们,然后了解它们的本质。
货柜如您所知,我们将以“容器”的概念开始有关Docker的对话。
货柜
像普通的塑料容器一样,Docker容器具有以下特征:
- 您可以在其中存储一些内容。 容器中或外部都可能有东西。
- 可以携带。 您可以在本地计算机,同事计算机,云服务提供商服务器(例如AWS)上使用Docker容器。 这使得Docker容器类似于普通容器,例如,在它们搬到新家时,它们会运送各种甜蜜的小装饰品。
- 在容器中放入一些东西很方便,从容器中取出一些东西也很方便。 普通的容器在闩锁上有一个盖子,必须将盖子取下才能将东西放入容器中或从中取出东西。 Docker容器具有类似的表示其接口的内容,即允许它们与外界交互的机制。 例如,容器具有可以打开的端口,以便可以从浏览器访问容器中运行的应用程序。 您也可以使用命令行工具使用容器。
- 如果您需要一个容器,可以在网上商店订购。 例如,可以在亚马逊网站上购买空容器。 容器由制造商运来这家商店,制造商使用模具大量生产它们。 对于Docker容器,可以与模具进行比较的对象(即容器映像)存储在一个特殊的存储库中。 如果需要某个容器,则可以从存储库下载相应的映像,然后使用它创建该容器。
当然,与Docker容器不同,塑料容器没有人会免费发送给您,当您收到它们时,它们将是空的。 但是,在Docker容器中总有一些有趣的东西。
活生物体
思考Docker容器的另一种方法是将它们与生物实例进行比较。 “实例”是以某种形式存在的东西。 这不只是代码。 这是导致比他自己更大的东西的存在的代码,比喻说,那是活的。 像其他生物一样,容器的实例也诞生,生存和死亡。
怪物被召唤为生命Docker容器是生动的Docker映像。
软体类
Docker容器不仅可以与普通容器或活生物进行比较。 它们可以与程序进行比较。 毕竟,容器是程序。 而且,从根本上讲,容器是一组在某些处理器上运行,处理某种数据的指令。
容器是程序在运行时,Docker容器通常在其中运行某种程序。 她在容器中执行某些操作,也就是说,她做了一些有用的事情。
例如,在Docker容器中运行的代码可能已将您正在阅读的文本发送到计算机。 在Docker容器中运行的代码很可能会接受您提供给Amazon Alexa的语音命令,并将其转换为在其他容器中运行的其他程序的指令。
使用Docker,您可以在同一台计算机上同时运行多个容器。 并且,与其他程序一样,Docker容器可以启动,停止和删除。 您可以检查它们的内容并创建它们。
Docker概念
▍虚拟机
Docker容器的前身是虚拟机。 虚拟机(如容器)将应用程序及其依赖项与外部环境隔离。 但是,Docker容器提供了优于虚拟机的优势。 因此,它们消耗更少的资源,非常易于转移,启动速度更快,并进入健康状态。 在本文中,您可以找到容器和虚拟机的详细比较。
▍Docker容器映像
上面我们已经讨论过“图像”。 这是什么 好问题。 Docker所谓的“图像”或英文中的“图像”与摄影完全不同(这是“图像”一词的含义之一)。
Docker图像不是照片可以将Docker容器的图像与图纸,饼干切割机或制造塑料产品的模具进行比较。 图像是不可变的模板,用于创建相同的容器。
Docker容器看起来像千篇一律Docker容器映像包含基本操作系统的映像,应用程序的代码以及其依赖的库。 所有这些都安排为一个单独的实体,您可以基于该实体创建容器。
▍Dockerfile
Dockerfile包含一组指令,随后,Docker将组装容器映像。 该文件包含基本图像的描述,它将是原始图像层。 在流行的官方基础图像中,可以注意到
python ,
ubuntu和
alpine 。
您可以在基础图像的顶部向容器图像添加其他图层。 这是根据
Dockerfile
的指示
Dockerfile
。 例如,如果
Dockerfile
描述了计划用于解决机器学习问题的映像,则它可能包含在该映像的中间层包含NumPy,Pandas和Scikit-learn库的说明。
最后,图像可能在所有其他图像的顶部都包含另一个薄层,其中存储的数据可以更改。 这是一个小容量层,其中包含您计划在容器中运行的程序。
▍Docker容器
为了启动容器,我们首先需要容器的映像,其次需要能够安装Docker的环境,并且能够理解
docker run image_name
形式的命令。 此命令从图像创建一个容器并启动它。
▍容器仓库
如果要允许其他人根据您的映像创建容器,则可以将此映像发送到云。 最大的此类存储库是
Docker Hub存储库。 默认情况下使用Docker时使用。
我们已经讨论了很多事情。 现在该将所有内容放在一起,并将Docker容器与披萨的工作进行比较。
用Docker烹饪
现成的比萨是一个容器- 披萨食谱是
Dockerfile
。 他告诉我们要达到目标,即得到一个有效的容器,需要做什么。 - 构成比萨的食材是容器图像的各层。 对于我们的披萨,您将需要蛋糕,酱汁和奶酪。
如果将食谱和食材放在桌上,事实证明,在一个地方,您需要的所有东西都被收集起来用来做比萨。 所有这些都可以与Docker容器的映像进行比较。
从食谱(
Dockerfile
)中,您可以找到烹饪比萨饼所需执行的操作顺序:
- Korzh已准备就绪,可以使用,我们不会对其进行更改。 可以将其与Ubuntu OS的基本映像进行比较。 这是图像的底层,它首先添加到图像中。
- 然后将奶酪添加到蛋糕中。 这就像像NumPy这样的外部库向图像添加第二层。
- 然后,在奶酪上加酱汁。 这是应在容器中运行的应用程序的代码。
现在是时候在烤箱里煮比萨了。
Oven是Docker平台比萨饼的烹饪烤箱类似于Docker平台。 烤箱安装在厨房中,可帮助您烹饪食物。 以相同的方式,将Docker安装在计算机上以“烹饪”容器。
如果烤箱是电动的,则通过旋转温度控制器的旋钮将其打开。
docker run image_name
类似于温度控制器,其“旋转”使系统创建并启动容器。
准备好比萨-这是Docker容器。
吃披萨意味着使用容器中运行的应用程序。
就像制作披萨一样,为Docker容器工作做准备需要花费一些时间,但最终,在这两种情况下,结果都非常好。
总结
在这里,从概念上讲,我们介绍了Docker的基础知识。 我们希望这里提供的比较可以帮助您了解Docker是什么,并感受到隐喻在掌握新技术中的价值。
亲爱的读者们! 这篇文章是Docker教程系列中第一篇文章的翻译。 根据作者,计划总共发布5种此类材料。
第二 ,
第三和
第四部分已经准备就绪。 告诉我们,是否值得翻译本系列中的以下文章?
