动态

详情 返回 返回

【Django開發】django美多商某城項目完整開發4.0第13篇:Docker使用,Docker簡介【附代碼文檔】 - 动态 详情

🏆🏆🏆教程全知識點簡介:1.郵件驗證系統包括Django發送郵件、保存郵箱併發送驗證郵件、Celery使用Django配置文件設置。2. 地址管理涵蓋shou貨地址、省市區地址查詢、數據庫建表、後端接口設計、前端實現、緩存使用(安裝、使用方法、省市區視圖緩存、緩存數據保存位置和有效期設置)、用户地址管理。3. 數據庫設計包括用户部分、產品部分、數據庫表設計、表結構、數據庫模型類。4. 容器化部署涵蓋Docker使用(Ubuntu安裝、啓動停止、鏡像操作)、FastDFS客户端與自定義文件存儲系統、頁面靜態化、定時任務、靜態化首頁腳本。5. 產品系統包括產品詳情頁、異步任務觸發、腳本工具、用户瀏覽歷史記錄(保存、查看)。6. 產品模式涵蓋B2B企業對企業、C2C個人對個人、O2O線上到線下、開發流程、需求分析。7. 購wu車系統包括購wu車管理、購wu車數據存儲設計(Redis保存已登錄用户)、添加到購wu車、查詢購wu車數據、登錄合併購wu車。8. 訂order單系統涵蓋提交訂order單、我的訂order單、訂order單評價、訂order單結算、保存訂order單、MySQL事務隔離級別修改、下單成功頁面。9. 搜索系統包括產品搜索、搜索引擎原理、Elasticsearch、Docker安裝Elasticsearch擴展、前端實現。10. 支fu系統涉及 集成、Xadmin管理後台。11. 項目配置包括項目準備、配置文件修改、數據庫配置、Redis配置、本地化語言時區、異常處理、日誌記錄。12. 用户認證系統涵蓋圖片驗證碼、域名設置、前端Vue代碼、跨域CORS、Celery發送短信、賬號存在判斷、JWT認證(JWT概念、構成、應用、Django REST framework JWT)、 登錄(登錄流程、模型類創建、urllib使用、回調處理)、用户中心個人信息。

<!-- start:bj1 -->

📚📚倉庫code.zip 👉直接-->:   https://gitlab.com/yinuo_112/Backend/-/blob/main/Django/djang...    🍅🍅

<!-- end:bj1 -->

✨ 本教程項目亮點

🧠 知識體系完整:覆蓋從基礎原理、核心方法到高階應用的全流程內容
💻 全技術鏈覆蓋:完整前後端技術棧,涵蓋開發必備技能
🚀 從零到實戰:適合 0 基礎入門到提升,循序漸進掌握核心能力
📚 豐富文檔與代碼示例:涵蓋多種場景,可運行、可複用
🛠 工作與學習雙參考:不僅適合系統化學習,更可作為日常開發中的查閲手冊
🧩 模塊化知識結構:按知識點分章節,便於快速定位和複習
📈 長期可用的技術積累:不止一次學習,而是能伴隨工作與項目長期參考

🎯🎯🎯全教程總章節


🚀🚀🚀本篇主要內容

Docker使用

使用Docker來安裝FastDFS。

學習目標:

  • 瞭解 Docker 與虛擬機的不同點,相比的優勢
  • 掌握 Docker 的啓動方法
  • 掌握 Docker 鏡像操作
  • 掌握 Docker 容器操作

Docker簡介

1. 虛擬化

1)什麼是虛擬化

在計算機中,虛擬化(英語:Virtualization)是一種資源管理技術,是將計算機的各種 實體資源,如服務器、網絡、內存及存儲等,予以抽象、轉換後呈現出來,打破實體結構間 的不可切割的障礙,使用户可以比原本的組態更好的方式來應用這些資源。這些資源的新虛 擬部份是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計 算能力和資料存儲。

在實際的生產環境中,虛擬化技術主要用來解決高性能的物理硬件產能過剩和老的舊的 硬件產能過低的重組重用,透明化底層物理硬件,從而最大化的利用物理硬件 對資源充 分利用

虛擬化技術種類很多,例如:軟件虛擬化、硬件虛擬化、內存虛擬化、網絡虛擬化(vip)、 桌面虛擬化、服務虛擬化、虛擬機等等。

Scikit-learn 文檔

2)虛擬化種類

aiohttp 文檔

1)全虛擬化架構

Django WSGI 部署

虛擬機的監視器(hypervisor)是類似於用户的應用程序運行在主機的 OS 之上,如 VMware 的 workstation,這種虛擬化產品提供了虛擬的硬件。

2)OS層虛擬化架構

3)硬件層虛擬化

硬件層的虛擬化具有高性能和隔離性,因為 hypervisor 直接在硬件上運行,有利於控制 VM 的 OS 訪問硬件資源,使用這種解決方案的產品有 VMware ESXi 和 Xen server

Hypervisor 是一種運行在物理服務器和操作系統之間的中間軟件層,可允許多個操作系 統和應用共享一套基礎物理硬件,因此也可以看作是虛擬環境中的“元”操作系統,它可以 協調訪問服務器上的所有物理設備和虛擬機,也叫虛擬機監視器(Virtual Machine Monitor, VMM)。

Hypervisor 是所有虛擬化技術的核心。當服務器啓動並執行 Hypervisor 時,它會給每一 台虛擬機分配適量的內存、CPU、網絡和磁盤,並加載所有虛擬機的客户操作系統。 宿主 機

Hypervisor 是所有虛擬化技術的核心,軟硬件架構和管理更高效、更靈活,硬件的效能 能夠更好地發揮出來。常見的產品有:VMware、KVM、Xen 等等。

2. 什麼是Docer

python-decouple 文檔

pathlib 文檔

容器技術

在計算機的世界中,容器擁有一段漫長且傳奇的歷史。容器與管理程序虛擬化 (hypervisor virtualization,HV)有所不同,管理程序虛擬化通過中間層將一台或者多台獨立 的機器虛擬運行與物理硬件之上,而容器則是直接運行在操作系統內核之上的用户空間。因 此,容器虛擬化也被稱為“操作系統級虛擬化”,容器技術可以讓多個獨立的用户空間運行 在同一台宿主機上。

由於“客居”於操作系統,容器只能運行與底層宿主機相同或者相似的操作系統,這看 起來並不是非常靈活。例如:可以在 Ubuntu 服務中運行 Redhat Enterprise Linux,但無法再 Ubuntu 服務器上運行 Microsoft Windows。

相對於徹底隔離的管理程序虛擬化,容器被認為是不安全的。而反對這一觀點的人則認 為,由於虛擬容器所虛擬的是一個完整的操作系統,這無疑增大了範圍,而且還要考慮 管理程序層潛在的暴露風險。

儘管有諸多侷限性,容器還是被廣泛部署於各種各樣的應用場合。在超大規模的多租户 服務部署、輕量級沙盒以及對安全要求不太高的隔離環境中,容器技術非常流行。最常見的 一個例子就是“權限隔離監牢”(chroot jail),它創建一個隔離的目錄環境來運行進程。 如果權限隔離監牢正在運行的進程被入侵者攻破,入侵者便會發現自己“身陷囹圄”,因為 權限不足被困在容器所創建的目錄中,無法對宿主機進一步破壞。

最新的容器技術引入了 OpenVZ、Solaris Zones 以及 Linux 容器(LXC)。使用這些新技 術,容器不在僅僅是一個單純的運行環境。在自己的權限類內,容器更像是一個完整的宿主 機。對 Docker 來説,它得益於現代 Linux 特性,如控件組(control group)、命名空間 (namespace)技術,容器和宿主機之間的隔離更加徹底,容器有獨立的網絡和存儲棧,還 擁有自己的資源管理能力,使得同一台宿主機中的多個容器可以友好的共存。

容器被認為是精益技術,因為容器需要的開銷有限。和傳統虛擬化以及半虛擬化相比, 容器不需要模擬層(emulation layer)和管理層(hypervisor layer),而是使用操作系統的系 統調用接口。這降低了運行單個容器所需的開銷,也使得宿主機中可以運行更多的容器。

儘管有着光輝的歷史,容器仍未得到廣泛的認可。一個很重要的原因就是容器技術的復 雜性:容器本身就比較複雜,不易安裝,管理和自動化也很困難。而 Docker 就是為了改變 這一切而生的。

容器與虛擬機比較

PyTorch 文檔

1)本質上的區別

2)使用上的區別

Docker特點

1)上手快

用户只需要幾分鐘,就可以把自己的程序“Docker 化”。Docker 依賴於“寫時複製” (copy-on-write)模型,使修改應用程序也非常迅速,可以説達到“隨心所致,代碼即改” 的境界。

隨後,就可以創建容器來運行應用程序了。大多數 Docker 容器只需要不到 1 秒中即可 啓動。由於去除了管理程序的開銷,Docker 容器擁有很高的性能,同時同一台宿主機中也 可以運行更多的容器,使用户儘可能的充分利用系統資源。

2)職責的邏輯分類

使用 Docker,開發人員只需要關心容器中運行的應用程序,而運維人員只需要關心如 何管理容器。Docker 設計的目的就是要加強開發人員寫代碼的開發環境與應用程序要部署 的生產環境一致性。從而降低那種“開發時一切正常,肯定是運維的問題(測試環境都是正 常的,上線後出了問題就歸結為肯定是運維的問題)”

3)快速高效的開發生命週期

Docker 的目標之一就是縮短代碼從開發、測試到部署、上線運行的週期,讓你的應用 程序具備可移植性,易於構建,並易於協作。(通俗一點説,Docker 就像一個盒子,裏面 可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件 件的取。)

4)鼓勵使用面向服務的架構

Docker 還鼓勵面向服務的體系結構和微服務架構。Docker 推薦單個容器只運行一個應 用程序或進程,這樣就形成了一個分佈式的應用程序模型,在這種模型下,應用程序或者服 務都可以表示為一系列內部互聯的容器,從而使分佈式部署應用程序,擴展或調試應用程序 都變得非常簡單,同時也提高了程序的內省性。(當然,可以在一個容器中運行多個應用程 序)

3. Docker組件

1)Docker 客户端和服務器

Docker 是一個客户端-服務器(C/S)架構程序。Docker 客户端只需要向 Docker 服務器 或者守護進程發出請求,服務器或者守護進程將完成所有工作並返回結果。Docker 提供了 一個命令行工具 Docker 以及一整套 RESTful API。你可以在同一台宿主機上運行 Docker 守護 進程和客户端,也可以從本地的 Docker 客户端連接到運行在另一台宿主機上的遠程 Docker 守護進程。

2)Docker鏡像

鏡像是構建 Docker 的基石。用户基於鏡像來運行自己的容器。鏡像也是 Docker 生命周 期中的“構建”部分。鏡像是基於聯合文件系統的一種層式結構,由一系列指令一步一步構 建出來。例如:

添加一個文件;

執行一個命令;

打開一個窗口。

也可以將鏡像當作容器的“源代碼”。鏡像體積很小,非常“便攜”,易於分享、存儲和更 新。

3)Registry(註冊中心)

Docker 用 Registry 來保存用户構建的鏡像。Registry 分為公共和私有兩種。Docker 公司 運營公共的 Registry 叫做 Docker Hub。用户可以在 Docker Hub 註冊賬號,分享並保存自己的 鏡像(説明:在 Docker Hub 下載鏡像巨慢,可以自己構建私有的 Registry)。

4)Docker容器

Docker 可以幫助你構建和部署容器,你只需要把自己的應用程序或者服務打包放進容 器即可。容器是基於鏡像啓動起來的,容器中可以運行一個或多個進程。 可以認為,鏡 像是Docker生命週期中的構建或者打包階段,而容器則是啓動或者執行階段。 容器基於 鏡像啓動,一旦容器啓動完成後, 就可以登錄到容器中安裝自己需要的軟件或者服務。

所以 Docker 容器就是: 一個鏡像格式; 一些列標準操作; 一個執行環境。

Docker 借鑑了標準集裝箱的概念。標準集裝箱將貨物運往世界各地,Docker 將這個模 型運用到自己的設計中,唯一不同的是:集裝箱運輸貨物,而 Docker 運輸軟件。

和集裝箱一樣,Docker 在執行上述操作時,並不關心容器中到底裝了什麼,它不管是 web 服務器,還是數據庫,或者是應用程序服務器什麼的。所有的容器都按照相同的方式將 內容“裝載”進去。

Docker 也不關心你要把容器運到何方: 可以在自己的筆記本中構建容器,上傳到 Registry,然後下載到一個物理的或者虛擬的服務器來測試,在把容器部署到具體的主機中。 像標準集裝箱一樣,Docker 容器方便替換,可以疊加,易於分發,並且儘量通用。

使用 Docker, 可以快速的構建一個應用程序服務器、一個消息總線、一套實用工 具、一個持續集成(CI)測試環境或者任意一種應用程序、服務或工具。 可以在本地構 建一個完整的測試環境,也可以為生產或開發快速複製一套複雜的應用程序棧。

4 使用Docker做什麼

容器提供了隔離性,結論是,容器可以為各種測試提供很好的沙盒環境。並且,容器本

身就具有“標準性”的特徵,非常適合為服務創建構建塊。Docker 的一些應用場景如下:

  • 加速本地開發和構建流程,使其更加高效、更加輕量化。本地開發人員可以構建、 運行並分享 Docker 容器。容器可以在開發環境中構建,然後輕鬆的提交到測試環境中,並 最終進入生產環境。
  • 能夠讓獨立的服務或應用程序在不同的環境中,得到相同的運行結果。這一點在 面向服務的架構和重度依賴微型服務的部署由其實用。
  • 用 Docker 創建隔離的環境來進行測試。例如,用 Jenkins CI 這樣的持續集成工具 啓動一個用於測試的容器。
  • Docker 可以讓開發者先在本機上構建一個複雜的程序或架構來進行測試,而不是 一開始就在生產環境部署、測試。

🚀✨ (未完待續)項目系列下一章

📚下一篇 將進入更精彩的環節!
🔔 記得收藏 & 關注,第一時間獲取更新!
🍅 一起見證整個系列逐步成型的全過程。
user avatar u_16776161 头像 razyliang 头像 yulong1992 头像 laggage 头像 jmix 头像 huaweichenai 头像 meituanjishutuandui 头像 iex365 头像 jamesfancy 头像 qinyuanqiblog 头像 xiangjiaochihuanggua 头像 ailvyoudemaojin 头像
点赞 27 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.