適合初學者的 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 KubernetesMesos 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 校友身份、實用的實踐頂點項目和頂級公司的工作協助。

為未來的職業做準備

立即申請全棧開發的執行 PG 計劃