Docker 101!
欢迎亲爱的读者,再次来到这个学习的机会。我为你为成为更好的自己而付出的努力鼓掌。我会一直提醒你,
每个大师都曾经是初学者,
无论您选择遵循哪种技术堆栈,都不要低估小小的开端!Stick to it!
自从我们一起踏上这段学习之旅以来,我们已经学习了一些原则,掌握了一些技巧,绝对是初学者水平。其中一些是:
直接潜入……
我们今天的主题就此开始。希望您能精神焕发,思路清晰。本文假设您之前没有使用过 Docker 或任何相关术语,请放松身心,享受阅读的乐趣。
为了解释 Docker 是什么,我们将首先回顾 Docker 诞生之前的几十年。我们将通过问题场景来理解 Docker 的起源、它在软件开发工作流程中的重要性,并提供一些基本的使用示例。
docker 面临的问题。
场景 1
您刚刚获得了第一份技术开发工作,在时间流逝之前,您的第一个任务就从首席技术官那里传来了。
任务...
您需要为非常需要帮助的群体——盲人——开发一款应用程序!
你如何开始,让我们看看!!
根据您的专业知识,并根据应用程序需求,选择一套能够提前完成任务的工具。
您的应用程序需要以下依赖项才能运行;
- 操作系统
- Python
- 像 Postgres 这样的数据库
- 烧瓶
手动安装应用程序依赖项
当前任务是将所有这些工具安装到本地系统。呼!!!这看起来已经够烦人的了。记住,手动安装时,你只能获得特定于你的机器/笔记本电脑的版本。
编码、协作、测试
到目前为止,你对编写一个解决社区迫切需求的实际应用非常得心应手。
你的老板给你设定了截止日期,要求你完成该应用的第一个模块。哎呀!截止日期到了,模块完成了。你把代码发给了运维团队,让他们测试一下。
几天后……
Operations Team manager
:
嘿,您发给我的代码无法在我的系统上运行,没有应用程序!!
出现了一个大问题
你能看到吗?
为什么会发生这种情况?简而言之,你使用了特定于你个人系统的依赖项,而不是通用的。另一个测试你应用的开发者也需要在他的个人系统上手动安装这些依赖项,如此循环往复。这样一来,你的应用崩溃的可能性就更大了……糟糕!
场景 2
您已经构建了第一个应用程序,但想在不同的操作系统上测试一下。该怎么做呢?
咨询了同事后,有消息称,通过……可以实现Virtual Machines
。太好了,您觉得利用虚拟化的概念很棒!虚拟化极大地帮助了开发人员,使他们能够像在独立的平台上一样,在计算机上构建和开发应用
程序 。他们可以使用虚拟计算机构建完全虚拟的操作系统,并在其中运行和开发。
开发人员可以在 Macbook 上运行虚拟 Windows 计算机,以评估基于 Windows 构建的应用程序的运行情况。运行虚拟机比购买全新计算机更便宜、更方便。我想这是一个非常棒的选择,可以节省几千美元。
从下图看看Docker和虚拟机之间的区别。
出现的问题...
当你在本地设备上尝试不同的虚拟机时,你开始注意到一些小问题。这些问题可能包括但不限于:
- 内存、存储等计算资源耗尽
- 网络拥堵
- 虚拟机内部的边际应用程序性能
安装虚拟机后,它们会与你的常规操作系统共享相同的硬件资源。因此,可扩展性问题随之而来,因为你的虚拟机会不断扩展,但硬件性能却不会。
您现在注意到这个问题了吗?
让问题自行解决...
关于传统软件开发实践,有很多场景可以列举。但我仅重点介绍了其中几个,以激发我们的思考,并帮助我们理解Docker
其中的奥秘。了解了这些挑战后,我相信你的思维已经进入了解决方案模式。
让我们重新聚焦
谁来拯救我们?Docker!!!
什么是 Docker?
Docker 是一款计算机程序,可以加速您构建、共享和运行现代应用程序的方式。本质上,它解决了我们上面讨论的所有问题场景。Docker
消除了繁琐单调的配置过程,并可在整个开发生命周期中使用,从而在桌面和云端实现快速、简单且可移植的应用程序开发。
换句话说,使用 Docker 开发将变得更加高效和可预测。
Docker 是一个用于构建、运行和部署容器化应用程序的工具。应用程序的代码、库、工具、依赖项和其他文件都包含在 Docker 镜像中。当用户执行镜像时,它可能会变成一个或多个容器。
具体来说如何?
好吧,为了回答这个问题,我将把这个概念分为三种方式;
- 建造
- 分享
- 跑步
建造
Docker 中的一切都基于镜像和容器。Docker
镜像是 Docker 容器用来运行程序的文件。Docker 镜像类似于模板,是构建 Docker 容器的指令集合。在使用 Docker 时,Docker 镜像也可作为起点。在虚拟机 (VM) 设置中,镜像类似于快照。
Docker 镜像包含多个层,每个层都源自其前一个层,但又彼此不同。这些层可以减少磁盘占用,同时提高可重用性并加快 Docker 构建速度。镜像层也是只读文件。容器形成后,会将一个可写入的层放置在不可更改的镜像之上,以便用户进行修改。
官方镜像是由 Docker 创建的,社区镜像是由 Docker 用户创建的。Docker 应用程序由CoScale代理监控,该代理是官方 Docker 镜像。
您可以放心使用 Docker Hub 镜像库中经过 Docker 验证的官方镜像。使用这些可靠且安全的镜像作为应用程序开发的基础。
Docker 镜像包含代码、配置文件、环境变量、库和运行时,用于运行容器化应用程序。镜像部署到 Docker 环境后,即可作为 Docker 容器运行。Docker run 命令会基于指定的镜像构建容器。
简单来说,你需要构建一个包含应用所有库和依赖项的镜像,并在运行该镜像时生成一个容器,该容器是应用的一个实例。你可以创建多个版本的应用。
例如;
您可以基于以下内容为您的 Flask 项目构建一个图像;
- Python
- 烧瓶
- MySQL
当您运行该图像时,您将创建应用程序的一个实例,您可以与任何人共享该实例,并且该实例将毫无问题地运行。
您看到 Docker 为您节省了多少吗?
分享
镜像构建完成后,您可以将其分享给全世界,任何人都可以使用(如果您愿意)。
您可以部署容器,并测试和共享来自私有或公共存储库(例如 Docker Hub 云注册服务中的存储库)的镜像。您还可以通过 Docker Hub 的 Docker Trusted Registry 进行镜像管理和访问控制。
用户可以使用 docker push 命令将自定义镜像发布到 Docker Hub,并从现有镜像生成新镜像。Docker 会在镜像发布前向作者提供评论,以确保社区镜像的质量。镜像发布后,作者有责任进行更新。
使用 Docker,您可以轻松与团队成员和其他开发者协作,提出新想法,并将镜像上传到 Docker Hub。甚至可以实现基于角色的访问控制和 Docker Hub 审计日志。这使得开发者可以更轻松地自定义镜像访问权限,并深入了解活动历史记录。
跑步
还记得我们说过,运行该docker run
命令时,实际上是在创建应用程序的一个实例。您可以创建任意数量的实例,例如:
- 开发实例
- 测试实例
- 暂存实例
- 生产实例(应用程序用户正在使用的实例)
因此,我们的概念是轻松交付大量应用程序,并让它们在所有设置(桌面或云原生)中以相同的方式运行,包括设计、测试、登台和生产。
我们该怎么做呢?
非常简单,只需将您的应用程序部署到独立的容器中,并使用不同的语言即可。这样可以降低不同语言、库或框架之间冲突的风险。
使用简便的 Docker Compose CLI,您只需一个命令即可使用 AWS ECS、Azure ACI 和 Google GKS 在本地和云中部署您的应用程序。
是的!关于 Docker 的内容就这些。希望你已经了解了一些 Docker 的概念。
入门指南。
Docker 是一个非常好的工具,可以纳入您的软件开发工作流程。
想要了解更多有关 docker 的体验,请参阅指南。
无需在系统上安装 Docker,您就可以利用在线游乐场练习如何使用 Docker 镜像和容器。
恭喜你读完这篇文章。相信你已经有所收获。
这篇文章怎么样?
我喜欢和分享内容的朋友们一起学习。您对这篇文章有什么见解吗?还有什么额外的功能/概念对文章有真正的价值吗?无论你有什么想法,请在讨论区分享。
暂时……我先告辞了。好好享受吧,下次再见。
