(一)Docker基本介紹

部署項目的發展

  • 傳統部署適合需要最大性能和可靠性的場景,但在資源利用和管理方面有顯著劣勢。
  • 虛擬化部署提供了良好的資源利用率和隔離性,適用于需要靈活擴展和多租戶環境的場景,但存在性能開銷。
  • 容器部署在輕量級、可移植性和資源利用率方面表現優異,特別適合現代微服務架構和 DevOps 流程,但需要處理隔離性和安全性挑戰。

選擇適合的部署方式取決于具體的應用需求、性能要求、資源管理和安全考慮。

了解了項目部署的方式,接下來就開始學習當下最熱門的容器技術的工具Docker


Docker 容器和傳統虛擬機有區別

物理服務器

物理服務器是一種實體的、有形的計算機硬件設備,通常被安置在數據中心或服務器機房中。物理服務器是構建IT基礎設施的基石,為各種云服務、虛擬化平臺和大型應用提供了必要的計算資源。隨著云計算和虛擬化技術的發展,許多企業選擇將部分或全部工作負載遷移到云平臺,但物理服務器仍然在某些特定場景下扮演著不可替代的角色,特別是在需要高性能、高安全性或特定硬件支持的情況下。

物理服務器與云服務器是虛擬化的關系

  • 物理服務器可以作為虛擬化的宿主機,運行多個虛擬機
  • 通過虛擬化技術,一臺物理服務器可以被劃分為多個虛擬服務器(如VPS)

VPS? vs? ?ECS

VPS (Virtual Private Server):

  • VPS 是在物理服務器上通過虛擬化技術創建的虛擬服務器。
  • 每個 VPS 都有獨立的操作系統、存儲和資源配置。
  • VPS 通常由主機服務提供商管理,用戶擁有 root 訪問權限。

但是VPS有個缺點,不支持自主升降級,不易動態調整,所以有了ECS

ECS (Elastic Compute Service):

  • ECS 是云服務提供商(如阿里云、亞馬遜 AWS)提供的彈性計算服務。阿里的叫ECS,AWS的叫EC2
  • 它是一種虛擬化的計算資源,可以根據需求快速擴展或縮減。
  • ECS 實例通常運行在物理服務器上,但用戶只需關注自己的虛擬機實例。

但是我們的服務器可能是不同的操作系統,部署應用會有各種的環境依賴問題,所以可以使用虛擬機將環境 + 應用打包

但是這種方法還是太笨重了,所以接下來引入了docker

Docker 是什么?

Docker 是一種開源平臺,旨在簡化應用程序的開發、部署和運行。通過使用容器技術,Docker 將應用程序及其依賴項打包到一個輕量級、獨立的容器中,從而確保在任何環境中都能一致地運行。

docker源碼

dockers官網

Namespace 提供了進程隔離,使得容器中的進程看到的系統資源是獨立的,與其他容器或主機系統隔離。

Cgroup 用于限制、記錄和隔離進程組使用的物理資源(CPU、內存、磁盤 I/O 等)

Docker 的主要特點

  1. 輕量級:Docker 容器共享主機操作系統的內核,與傳統虛擬機相比,更加輕量級,啟動速度更快,資源開銷更小。

  2. 一致性和可移植性:Docker 容器包含應用程序及其所有依賴項,確保在不同環境(開發、測試、生產)中的一致運行,從而提高應用程序的可移植性。

  3. 隔離性:Docker 提供了進程級的隔離,每個容器都有自己獨立的文件系統、網絡和進程空間,確保應用程序之間的相互隔離。

  4. 高效資源利用:Docker 容器共享主機的操作系統內核,可以在同一主機上運行更多的容器,從而提高資源利用率。

  5. 易于集成和擴展:Docker 可以與持續集成和持續部署(CI/CD)工具無縫集成,支持快速開發、測試和部署應用程序。此外,Docker 生態系統中的 Docker Compose 和 Docker Swarm 等工具,使得管理和編排多個容器變得更加簡單。


Docker 的基本組件

Docker Engine

  • Docker 的核心組件,包括 Docker 守護進程(daemon)和 Docker CLI(命令行接口)。Docker 守護進程負責構建、運行和管理容器,Docker CLI 提供與守護進程交互的命令行工具。

Docker Image

  • Docker 鏡像是一個只讀的模板,用于創建容器。它包含了運行應用程序所需的所有內容,包括代碼、運行時、庫和配置文件。鏡像可以從公共或私有的 Docker 倉庫(如 Docker Hub)中獲取。

Docker Container

  • Docker 容器是鏡像的一個運行實例。容器是獨立、可執行的軟件包,包含了運行應用程序所需的所有內容。它們可以快速啟動和停止,并在不同的環境中一致地運行。

Docker Repository

  • Docker 倉庫用于存儲和分發 Docker 鏡像。Docker Hub 是一個公共倉庫,提供大量的官方和社區構建的鏡像。用戶也可以創建自己的私有倉庫來存儲自定義鏡像。

Docker daemon

  • Docker daemon 監聽 Docker API 請求并管理 Docker 對象,如鏡像、容器、網絡和數據卷。守護進程還可以與其他守護進程通信以管理 Docker 服務。

Docker client

  • 是許多 Docker 用戶與 Docker 交互的主要方式。當你使用 docker run 等命令時,客戶端將這些命令發送給 dockerd 執行。Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器,并且可以與多個守護進程通信。

Docker Host

  • 一個物理或者虛擬的機器用于執行 Docker 守護進程和容器。

Docker Desktop

  • Docker Desktop 是一個適用于 Mac 和 Windows 環境的易于安裝的應用程序,使你能夠構建和共享容器化的應用程序和微服務。Docker Desktop 包含 Docker 守護進程(dockerd)、Docker 客戶端(docker)、Docker Compose、Docker Content Trust、Kubernetes 和 Credential Helper。

Docker Container 生命周期

Docker Container 生命周期,由以下五個狀態組成

  1. Created state
  2. Running state
  3. Paused state/unpaused state
  4. Stopped state
  5. Killed/Deleted state

1. Created state

docker create --name <name-of-container> <docker-image-name>

2. Running state

在運行狀態下,Docker 容器開始執行鏡像中提到的命令。要運行 Docker 容器,請使用 docker run 命令。

docker run <container-id>
or
docker run <container-name>

docker run 命令會創建一個容器(如果該容器不存在)。在這種情況下,可以跳過創建容器的步驟。

3. Paused state/unpaused state

在暫停狀態下,Docker 容器中當前執行的命令被暫停。使用 docker pause 命令來暫停正在運行的容器。

docker pause container <container-id or container-name>

注意:docker pause 會暫停容器中的所有進程。它發送 SIGSTOP 信號來暫停容器中的進程。

在取消暫停狀態下,被暫停的容器一旦取消暫停就會恢復執行命令。 使用 docker unpause 命令來恢復暫停的容器。 然后,Docker 發送 SIGCONT 信號來恢復進程。

docker unpause <container-id or container-name>

4. Stopped state

在停止狀態下,容器的主進程被優雅地關閉。Docker 發送 SIGTERM 信號進行優雅關閉,如果需要,會發送 SIGKILL 信號來終止容器的主進程。使用 docker stop 命令來停止容器。

docker stop <container-id or container-name>

重啟 Docker 容器相當于執行 docker stop,然后執行 docker run,即停止和運行階段。

5. Killed/Deleted state

在終止狀態下,容器的主進程被突然關閉。Docker 發送 SIGKILL 信號來終止容器的主進程。

docker kill <container-id or container-name>

到此docker 容器的生命結束

參考

Docker Architecture, Life Cycle of Docker Containers and Data Management - DEV Community

docker容器和傳統虛擬機有什么區別?_嗶哩嗶哩_bilibili

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41421.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41421.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41421.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

適合金融行業的國產傳輸軟件應該是怎樣的?

對于金融行業來說&#xff0c;正常業務開展離不開文件傳輸場景&#xff0c;一般來說&#xff0c;金融行業常用的文件傳輸工具有IM通訊、郵件、自建文件傳輸系統、FTP應用、U盤等&#xff0c;這些傳輸工具可以基礎實現金融機構的文件傳輸需求&#xff0c;但也存在如下問題&#…

【Java10】成員變量與局部變量

Java中的變量只有兩種&#xff1a;成員變量和局部變量。 和C不同&#xff0c;沒有全局變量了。 成員變量&#xff0c;field&#xff0c;我習慣稱之為**”屬性“**&#xff08;但這些年&#xff0c;因為attribute更適合被叫做屬性&#xff0c;所以漸漸不這么叫了&#xff09;。 …

google 郵件信息收集

主要介紹通過google和fofax對目標進行郵件信息收集 chrome插件 email-whatsapp-extractor link-klipper-extract-all bulk-url-opener-extension email-whatsapp-extractor 使用正則表達式&#xff0c;獲取訪問頁面內所有的email郵箱和whatsapp號碼&#xff0c;以表格的形式導…

el-table封裝點擊列篩選行數據功能,支持篩選,搜索,排序功能

數據少的話&#xff0c;可以前端實現&#xff0c;如果多的話&#xff0c;建議還是請求接口比較合理父組件&#xff1a; <template> <div class"home"> <!-- <img alt"Vue logo" src"../assets/logo.png"> <HelloWorld …

Hilbert編碼 思路和scala 代碼

需求&#xff1a; 使用Hilbert 曲線對遙感影像瓦片數據進行編碼&#xff0c;獲取某個區域的編碼值即可 Hilbert 曲線編碼方式 思路 大致可以對四個方向的數據進行歸類 左下左上右上右下 這個也對應著編碼的順序 思考在不同Hilbert深度&#xff08;階&#xff09;情況下的…

【fastadmin開發實戰】經營數據自動識別錄入

項目場景描述&#xff1a;每日錄入各個門店的員工經營數據&#xff0c;直接從微信復制報數、系統識別錄入。 解決方案&#xff1a;各個門店按照固定的匯報模板進行匯報&#xff08;如福田店有員工1、2、3、4、5號員工&#xff0c;每個員工按模板報數&#xff09; 例如&#xf…

Qt學習:Qt窗口組件以及窗口類型

一、Qt的窗口組件有哪些 Qt是一個跨平臺的C應用程序開發框架&#xff0c;它的窗口組件&#xff0c;也稱為用戶界面元素&#xff0c;為開發者提供了豐富的可視化界面設計選項。在Qt中&#xff0c;窗口組件主要包括&#xff1a; 窗口&#xff08;Window&#xff09;&#xff1a;…

JMH320【親測】【御劍九歌】唯美仙俠手游御劍九歌+WIN學習手工端+視頻教程+開服清檔+運營后臺+授權GM物品充值后臺

資源介紹&#xff1a; 這也是仙夢奇緣的一個游戲 注意&#xff1a;外網14位IP或域名 ———————————————————————————————————– ps后臺介紹: 1區運營后臺&#xff1a;http://ip:9981/admin/admintool/ 2區運營后臺&#xff1a;http://ip…

Day44:LeedCode 188.買賣股票的最佳時機IV 309.最佳買賣股票時機含冷凍期 714.買賣股票的最佳時機含手續費

188. 買賣股票的最佳時機 IV 給你一個整數數組 prices 和一個整數 k &#xff0c;其中 prices[i] 是某支給定的股票在第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。你最多可以完成 k 筆交易。也就是說&#xff0c;你最多可以買 k 次&#xff0c;賣 k 次。 注意&…

[深度學習]卷積理解

單通道卷積 看這個的可視化就很好理解了 https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md 多通道卷積 當輸入有多個通道時,卷積核需要擁有相同的通道數. 假設輸入有c個通道,那么卷積核的每個通道分別于相應的輸入數據通道進行卷積,然后將得到的特征圖對…

51單片機STC89C52RC——14.1 直流電機調速

目錄 目的/效果 1&#xff1a;電機轉速同步LED呼吸燈 2 通過獨立按鍵 控制直流電機轉速。 一&#xff0c;STC單片機模塊 二&#xff0c;直流電機 2.1 簡介 2.2 驅動電路 2.2.1 大功率器件直接驅動 2.2.2 H橋驅動 正轉 反轉 2.2.3 ULN2003D 引腳、電路 2.3 PWM&…

智能光伏開發都能用到什么軟件和工具?

隨著全球對可再生能源的日益重視和光伏技術的快速發展&#xff0c;智能光伏開發已成為推動能源轉型的重要力量。在光伏項目的全生命周期中&#xff0c;從設計、建設到運營管理&#xff0c;各種軟件和工具的應用發揮著至關重要的作用。 一、光伏系統設計軟件 1、PVsyst PVsyst…

Linux 端口

什么是虛擬端口 計算機程序之間的通訊&#xff0c;通過IP只能鎖定計算機&#xff0c;但是無法鎖定具體的程序。通過端口可以鎖定計算機上具體的程序&#xff0c;確保程序之間進行溝通。 IP地址相當于小區地址&#xff0c;在小區內可以有許多用戶&#xff08;程序&#xff09;&…

java并發編程 JUC-基礎篇 快速入門

1.進程與線程的概念 &#xff08;1&#xff09;進程 程序有指令與數據組成&#xff0c;指令要運行&#xff0c;數據要讀寫&#xff0c;就必須指令加載到CPU。數據加載到內容&#xff0c;指令運行需要用到磁盤。 當一個程序被運行時&#xff0c;從磁盤加載這個程序的代碼至內…

探索Vue Router:構建高效單頁面應用的指南

引言 Vue Router&#xff0c;作為Vue.js的官方路由管理器&#xff0c;為構建SPA提供了強大的支持 Vue Router 基礎 Vue Router 的基本概念和作用 Vue Router 是一個用于構建單頁面應用的 Vue.js 插件。它允許我們通過定義路由規則來將不同的 URL 映射到不同的組件&#xff…

1023記錄

米哈游二面 自動化測試中自動化驅動的能力&#xff1f; pytest的驅動能力&#xff1a; 1&#xff0c;自動發現測試用例&#xff1a;以"test_"開頭的Python文件、以"Test"開頭的類和以"test_"開頭的函數&#xff0c;將它們識別為測試用例 2&…

植物大戰僵尸融合版最新版1.0下載及安裝教程

《植物大戰僵尸融合版》最新版1.0已經發布&#xff0c;為粉絲們帶來了全新的游戲體驗。這個版本由B站UP主藍飄飄fly精心打造&#xff0c;引入了創新的植物融合玩法&#xff0c;讓玩家可以享受策略和創意的結合。以下是游戲的詳細介紹和安裝指南&#xff1a; 游戲特色介紹 全新…

基于深度學習的圖像背景剔除

在過去幾年的機器學習領域&#xff0c;我一直想打造真正的機器學習產品。 幾個月前&#xff0c;在參加了精彩的 Fast.AI 深度學習課程后&#xff0c;似乎一切皆有可能&#xff0c;我有機會&#xff1a;深度學習技術的進步使許多以前不可能實現的事情成為可能&#xff0c;而且開…

Java--繼承

1.繼承的本質是對某一批類的抽象&#xff0c;從而實現對世界更好的建模 2.extends的意思是“擴展”&#xff0c;子類是父親的擴展 3.Java中只有單繼承&#xff0c;沒有多繼承 4.繼承關系的兩個類&#xff0c;一個為子類&#xff08;派生類&#xff09;&#xff0c;一個為父類…

QML-Grid和OpacityMask

一個格子條&#xff0c;點擊縮短 import QtQuick 2.0 import QtQuick.Window 2.12 import QtQuick.Controls 2.5 //導入 import QtGraphicalEffects 1.12Window {id:windowwidth: 600height: 500color: "white"visible: trueGrid {visible: falseid:gridwidth:405he…