适合初学者的 12 个有趣的 Docker 项目创意 [2022]
已发表: 2021-01-07今天,应用程序的开发和部署方式不再像 DevOps 之前那样。 自从 DevOps 成为 IT 和软件行业的主流以来,它已经从根本上改变了运营基础架构。 现在,开发人员和运维人员携手合作,快速高效地构建、测试和部署应用程序。 这正是 Docker 适合的地方。
Docker 是一个容器化软件,或者更准确地说,是一个 PaaS 工具,它允许您将应用程序及其环境分割成更小的块,这些块可以轻松地存储和部署在任何环境和机器中。 通过容器化,多个容器(包括应用程序、它们的系统文件和环境)可以在一个虚拟机中顺利工作,甚至无需共享所有资源。
因此,您可以在同一个虚拟机中运行多个应用程序,每个应用程序的运行就像它拥有自己的操作系统、CPU、内存、存储和其他关键资源一样。
Docker 生态系统包括四个主要项目,即 Moby、Kubernetes 和 Containerd。 然而,这还不是全部——Docker 远不止这三个项目。 每天, Docker社区都在积极致力于为 Docker 开发一流的项目和工具,以便世界各地的开发人员可以构建和部署可以在任何地方运行的应用程序。 如果你想学习 DevOps,Docker 是一个重要的学习部分。
学习构建 Swiggy、Quora、IMDB 等应用程序
在这篇文章中,我们将重点介绍每个有抱负的开发人员都应该知道的一些最好的 Docker 项目!

目录
顶级 Docker 项目理念
1. RancherVM
用过 Docker 的人应该都知道 Rancher 是什么。 它是一个容器即服务供应商,包括一些最广泛使用的容器编排和调度框架——Docker Swarm 、 Kubernetes和Mesos 。 RancherVM 是 Rancher 鲜为人知的项目之一,它允许您在 Docker 容器中运行 VM。 它配备了一个 Web UI,用于管理公钥、计算节点、VM,并从 Web 浏览器访问 VNC 控制台。
使用 RancherVM,您可以构建在 Kubernetes pod 中运行的 VM,也称为 VM Pod。 每个 VM pod 都包含一个运行虚拟机实例的容器。 目前 RancherVM 只支持 KVM 镜像。 因此,您可以将任何 KVM 映像打包为 Docker 映像,使用任何 Docker 注册表(例如 DockerHub)分发它,然后在 RancherVM 上运行它。
此外,RancherVM 使用自定义资源定义 (CRD) 扩展了 Kubernetes API。 您可以定义 VirtualMachine CRD 规范,指定什么基础映像、多少计算资源以及授权哪些密钥对来启动 SSH 会话。 然后,Kubernetes 控制器将根据您提供的规范创建 VM pod,并在 VirtualMachine CRD 状态中显示相同的内容。
了解更多:面向初学者的十大令人兴奋的 DevOps 项目 [2020]
2. Dockercraft
2015 年 11 月,微软在公众面前发布了 Dockercraft。 它是在 GitHub 上作为开源项目推出的,明确旨在允许开发人员在Minecraft (我的世界)中管理他们的 Docker 容器,这是微软以 25 亿美元购买的流行游戏!

根据GitHub ,Dockercraft 是 Minecraft 3D 环境中的“简单的 Minecraft Docker 客户端,用于可视化和管理 Docker 容器”。 它并不完全是 Minecraft 中实现的复杂 Docker 管理器,而是一种在 Docker 容器中可视化和翻转开关的简单方法。
请务必记住,您必须在 PC 上安装完整版的 Minecraft 才能使用 Dockercraft。 如果你已经拥有它,你可以从Github下载 Dockercraft 。 完成设置后,您必须运行 Dockercraft 容器并加入自定义 Minecraft 服务器 - Cuberite。
3.酒
Docker 最大的缺点是 Dockerized 应用程序不是跨平台的,这意味着您不能在 Linux 上本地运行 Docker Windows 应用程序。 为了解决这个问题, Wine应运而生。 Docker 上的 Wine 旨在使 Windows 应用程序能够在 Linux 操作系统上运行,就像本地应用程序可以在世界任何地方运行一样。 在 Docker 上,它被称为 Wine,而在GitHub 上,我们称之为 Docker-Wine。
Wine 使用Wine 兼容层来支持 Linux 上的 Windows 应用程序。 由于 Wine 带有动态视频驱动程序和具有本地和远程支持的VirtualGL ,它应该与开箱即用的 Nvidia 卡和 Nvidia 驱动程序甚至其他使用 Mesa 驱动程序的卡一起运行。 您可以将 Wine 配置为自动适应您可能安装的任何驱动程序,前提是它们是您分支的最新驱动程序。
4. 码头工人星期一
目前,针对 Docker 镜像的监控服务屈指可数,例如Shipyard 。 开发人员/程序员喜欢让他们访问 shell 内所有基本要求的工具,这是一个公认的事实。 Docker-Mon 就是这样一种控制台 Docker 监控工具。 Docker-mon 基于bled-contrib ,一个以shell 为中心的仪表板框架。
该项目仍在进行中,它依赖于尚未启动的docker stats 功能。 因此,要使用 Docker-Mon,您将需要主版本或即将推出的 v1.5.0(您可以在此处查看 v1.5.0-rc1 的启动)。
5. 客运码头
我们都知道Phusion Passenger是 Rails 开发人员的最爱。 此应用服务器的主要目标是创建一个合适的环境,让开发人员可以顺利运行他们的应用程序。 这个想法激发了Passenger-Docker项目的创建。 目的是为希望在生产环境中实现 Docker 的开发人员开发一个合理的默认基础镜像。
Passenger-Docker是一套 Docker 镜像,旨在用作 Ruby、Python、Node.js 和 Meteor Web 应用程序镜像的基础。 秉承 Phusion Passenger 的核心理念,Passenger-Docker 项目旨在简化和加快为 Web 应用程序制作 Docker 映像的过程。
6.KubeVirt
KubeVirt 是 Kubernetes 的虚拟机管理插件。 它的开发目的是为在 Kubernetes 之上构建虚拟化解决方案提供一个共同基础。 从本质上讲,创建 Kubernetes 是为了管理容器而不是其他类型的基础设施。 但是,您可以使用 Kubernetes 来编排 VM 集群。 这就是 KubeVirt 所做的——它为 Kubernetes 添加了额外的功能,以便它可以无缝地支持虚拟机。
KubeVirt 旨在通过Kubernetes 的自定义资源定义 API合并其他虚拟化资源类型来扩展 Kubernetes 的功能。 您可以使用 KubeVirt 构建预定义的 VM、启动 VM、停止 VM、删除 VM,还可以在 Kubernetes 集群上调度 VM。 但是,KubeVirt 仍在进行中。
阅读更多: Kubernetes 网络:了解网络模型的完整指南
7. 案卷
Docket是一个自定义 Docker 注册表,可通过 BitTorrent 促进闪电般的快速部署。 它允许您以惊人的速度在大型机器集群上部署 Docker 映像。 Docket 是在 Gopher Gala Golang 48 小时黑客马拉松中用 48 小时设计和开发的! Docket 是用 Golang 编写的,用户友好,它可以很好地与您的私有 Docker 注册表一起工作。
Docket 由三个主要部分组成——
- Docket Registry:它是一种 REST 服务,用作注册表。 它可以从客户端接收 Docker 镜像 tarball,将元数据存储到数据库中,并从中创建种子以及播种。
- Docket Client:它是最终用户与之交互的接口。 它允许您查看注册表中的可用映像、将映像推送到注册表以及从注册表中提取映像(这会触发 BitTorrent 部署)。
- BitTorrent Tracker:虽然 Docket 具有 BYOT(带上您的跟踪器)功能,但我们建议您安装opentracker来跟踪 BitTorrent。
8. 容器迁移工具(CMT)
Docker 容器的一个好处是它们是可移植的,例如,它们可以在安装了 Docker 的任何类型的主机上运行。 但是,Docker 缺少允许您通过网络将正在运行的容器从一个集群移动到另一个集群的内置功能。 为了增加挑战,检查点和恢复 (CR) 仍然是一个相对较新的功能,容器用户通常无法使用。 CR 要求对其功能有一定程度的了解,通常,由于源主机和目标主机之间的差异/限制,大多数不熟悉 CR 功能的用户在执行 CR 时会出错。
容器迁移工具或 CMT 是专门为解决这个迁移问题而开发的。 创建 CMT 背后的想法是创建一个可与 Docker 或 runC 一起使用的外部命令行工具,通过执行迁移前验证和自动发现合适的目标主机来促进不同主机之间的容器实时迁移。
9. dockerfile_lint
Linter 是从前端开发工具链的关键组件。 它们被 JavaScript 开发人员广泛使用,并且在许多开发人员在共享代码库上工作时特别方便。 dockerfile_lint是 Dockerfiles 的基于规则的linter 。
您可以使用 dockerfile_lint 规则来检查由规则文件编写器确定的文件语法、任意语义和最佳实践属性。 此外,您可以使用 linter 针对 Docker 映像检查 LABEL 规则。 规则文件是用YAML编写的。 所有规则都是使用正则表达式实现的,它们一次可以在 Dockerfile 的一条指令上运行。 规则文件由四个部分组成 -
- Profile 部分:它提供有关规则文件的必要信息,帮助用户为特定的 Dockerfile 选择适当的规则文件。
- 通用部分:它包含通用语法规则。
- 行规则部分:它包含必须在 Dockerfile 中的给定指令上运行的规则。 有检查每条指令语法的规则。
- 必需的指令部分:它包含 Dockerfile 中必须存在的指令列表,以便认为它是有效的。
10. Docker 混合
Dockermix是一个命令行工具,用于开发和管理多容器 Docker 环境。 在这个项目中,容器集以 YAML 格式定义,模拟 Docker API 中可用的选项。 创建 Dockermix 的目的是让开发人员能够轻松启动、编排和部署复杂的多节点环境以进行测试和开发。
Dockermix 项目现已更名为Maestro ,其开发由 Toscanini 组织负责。 要访问当前源代码,您可以查看Maestro 项目。
11. Docker 食谱
Docker Cookbook包括安装 Docker 以及构建、管理和运行 Docker 容器的所有必要资源。 这个 Docker 项目仅与 Docker, Inc. 分发的Docker 容器引擎相关联,它不涉及 Docker 生态系统工具或其他技术,如 Cgroups 或 AUFS。
要使用 Docker Cookbook,您的机器上必须安装 Chef v12.15 或更高版本。 Cookbook 支持多种平台,包括 Amazon Linux、Fedora、CentOS 7、Debian 8/9 和 Ubuntu 14.04/16.04。 此外,它可以自动设置上游 Docker 包存储库。

12. 独库
Dokku是 Docker 驱动的 mini-Heroku,是迄今为止开发的最小的 PaaS 实现。 这种 PaaS 解决方案允许用户在单独的服务器上配置和部署应用程序到生产环境。 它使用 Docker 帮助开发人员构建和管理应用程序的完整生命周期。
您可以在任何机器上安装 Dokku,甚至可以在廉价的云提供商上使用它。 此外,您可以使用任何语言编写 Dokku 插件,在线共享它们,并扩展已经可用的插件。
从世界顶级大学在线学习软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
包起来
这些只是以 Docker 为基础开发的众多项目中的一部分。 尽管您的下一个项目不需要所有这些 Docker 工具,但很高兴知道您有多种选择!
如果您有兴趣了解有关大数据的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为在职专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目和作业,IIIT -B 校友身份、实用的实践顶点项目和顶级公司的工作协助。
