【架構】Docker簡單認知構建

作為一個之前從來沒有接觸過Docker的倒霉蛋,想了解學習一下Docker

搜了CSDN和RUNOOB,得到的描述如下:

Docker 是一個開源的應用容器引擎,基于?Go 語言?并遵從 Apache2.0 協議開源。

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。

容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

?Docker 的應用場景

  • 微服務架構:每個服務獨立容器化,便于管理和擴展。

  • CI/CD流水線:與 Jenkins/GitLab CI 集成,實現自動化構建和測試。

  • 開發環境標準化:新成員一鍵啟動全套依賴服務(如數據庫、消息隊列)。

  • 云原生基礎:Kubernetes 等編排工具基于 Docker 管理容器集群。

Docker是什么
是一個開源的應用容器引擎,基于go語言開發并遵循apache2.0協議開源
是在Linux容器里運行應用的開源工具
是一種輕量級的 “虛擬機”
Docker的容器技術,可以在一臺主機上輕松為任何應用創建一個輕量級的、可移植的、自給自足的容器
市場占有率最高? ? ? ? ? ? ? ? ? ? ? ??
原文鏈接:https://blog.csdn.net/F12138X/article/details/140344339

但說實話,我讀了這些很正式的“全網統一”?的概念性官方描述,關于Docker到底是什么東西,還是沒有一個落地的認知,因為我很難理解“引擎”、“虛擬化”、“容器”。這很像是我不懂某個詞的含義,我去查,查出來的解釋里面有三個我不懂含義的詞。

于是我嘗試得出一個最簡單的結論:Docker是一個管打包的,或者我們暫且用“封裝”來理解

比方這樣一個場景:

有個項目,有前端angular環境、后端python環境、又依賴數據庫,又引用外置的三方庫包DLL

這時候新來了一個項目成員,我要給他配置搭建環境

于是我花了一個下午的時間,把什么node.js、python3.7、lib/DLL都拷到他電腦上裝好,啟動的時候又出了一些狀況,修修改改,終于是能啟動了,可以讓他看代碼然后嘗試開發。搞得汗流浹背

但如果后面再進新人,每一個我都折騰這么半天,效率實在是低

如果有一種技術可以把我們所需要的所有環境、依賴、配置都統一打包封裝好,到時候由機器按照流程去做這個搭建,那就很爽了

哎,這就是docker要干的事

于是我們引入三個Docker中的核心概念:鏡像(Image),容器(Container),倉庫(Repository)

上面說到,我們可以通過Docker,把app運行需要的所有內容(代碼、庫文件、環境變量、配置文件)都打包封裝好,這個過程生成出來的東西,叫做鏡像

我們通過指令來告知docker如何進行打包封裝,指令集我們放在Dockerfile當中

到了鏡像這里,app就已經是可移植的啦,把鏡像拿到其他目標環境當中,再進行實例化,就得到了容器。容器是鏡像的運行實例,是一個輕量級、可移植的執行環境。我們的一個鏡像可以拿到多個地方,生成多個容器,完成app的移植

那么這個鏡像是如何轉移的呢,我們自然可以像拷貝代碼一樣將鏡像一份一份拷貝,也可以像git一樣通過倉庫來完成代碼的上傳和下載。也就是說,docker也是有倉庫的。

我們可以通過注冊個人docker倉庫,將自己的鏡像上傳,供以下載使用

同時呢,docker也有很多官方倉庫,里面放了一些標準通用的環境,比如說各個版本的操作系統,各個版本的Nginx,各個版本的python等等。我們也可以在這些docker已經準備好的環境基礎上再定制自己的鏡像

【Rigistry:倉庫注冊服務器,如Docker?Hub】

【Repository:具體的鏡像倉庫,如nginx、mysql】

至此,關于docker的基本核心概念,就有一個大概準確的了解了,再回頭看文章開頭的那些描述,也更好理解他們在嘰里咕嚕表達什么了。

這里還有一個誤區,不是只有那一整套環境、代碼、依賴才叫容器,他們確實是一個大的容器,但是事實上,比方說數據庫MySQL,后端python,前端angular,他們可以是在大容器中包含的幾個小容器,容器之間是可以進行數據通信的。不要像我之前一樣把容器理解的太狹隘了

關于docker命令,我準備放在后面和linux命令合并在同一篇來寫

?

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

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

相關文章

C++ std::list概念與使用案例

C std::list 概念詳解 std::list 是 C 標準模板庫(STL)中的一個雙向鏈表容器。與 vector 和 array 不同,它不保證元素在內存中連續存儲,而是通過指針將各個元素連接起來。 核心特性 雙向鏈表結構: 每個元素包含指向前驅…

從0到1學Pandas(六):Pandas 與數據庫交互

目錄一、數據庫基礎操作1.1 連接數據庫1.2 執行 SQL 查詢1.3 創建與修改表結構二、數據導入導出2.1 從數據庫讀取數據2.2 將數據寫入數據庫2.3 大數據量處理三、數據庫事務處理3.1 事務概念與實現3.2 批量數據更新3.3 錯誤處理與回滾四、數據庫性能優化4.1 查詢性能優化4.2 連接…

GitHub 趨勢日報 (2025年07月26日)

📊 由 TrendForge 系統生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日獲星趨勢圖 今日獲星趨勢圖602Qwen3-Coder573neko527hrms275BillionMail153Win11Debloat115hyperswitch57data…

機器人仿真(2)Ubuntu24.04下RTX5090配置IsaacSim與IsaacLab

目錄 一、前言二、電腦配置三、配置步驟3.1 創建Conda環境3.2 安裝PyTorch3.3 安裝Isaac Sim3.4 安裝Isaac Lab 四、總結 一、前言 博主自從去年開始就一直在關注Isaac Lab和Isaac Sim,但是一直以來由于手頭設備只有4060,甚至沒有達到最低配置16GB顯存要…

DaVinci Resolve 19.0(達芬奇)軟件安裝包下載及詳細安裝教程|附帶安裝文件

[軟件名稱]:ArcGIS [軟件大小]:2.99 GB [系統要求]:支持Win7及更高版本 [下載通道]: 迅雷網盤 [下載鏈接]:高速下載地址 https://pan.xunlei.com/s/VOW9nw-JV99A_7f_5hhpgqO2A1?pwdbufh# ??:先用手機下載迅雷網盤保存到手機中&#xff0c…

Java學習第八十一部分——Shiro

目錄 📫 一、前言提要簡介 🛡? 二、核心功能介紹 ?? 三、核心架構組件 ? 四、與Java的關系 ?? 五、與Spring Security對比 🧩 六、典型應用場景 💎 七、總結歸納概述 📫 一、前言提要簡介 Apache Shiro 是…

虛擬機ubuntu20.04共享安裝文件夾

ubuntu20.04共享安裝文件夾 4.5 共享安裝文件夾 將Windows存放安裝文件的文件夾共享給虛擬機,如下圖操作:如果是在ubuntu20.04中,還需要以下的操作: sudo mkdir /mnt/hgfs 此命令無效 sudo echo ‘vmhgfs-fuse /mnt/hgfs fu…

如何查看電腦后門IP和流量?

你是否也有以下經歷?深夜,你的電腦風扇突然狂轉,屏幕卻一片寂靜;每月流量莫名超標,賬單高得離譜;鼠標偶爾不聽使喚…這些可能不是電腦“鬧脾氣”,如何一探究竟? 想象一下&#xff1a…

分類預測 | MATLAB基于四種先進的優化策略改進蜣螂優化算法(IDBO)的SVM多分類預測

分類預測 | MATLAB基于四種先進的優化策略改進蜣螂優化算法(IDBO)的SVM多分類預測 目錄分類預測 | MATLAB基于四種先進的優化策略改進蜣螂優化算法(IDBO)的SVM多分類預測分類效果基本介紹多策略量子自適應螺旋搜索算法研究摘要1. 引言1.1 研究背景1.2 研究意義1.3 研究目標2. 文…

Android 修改系統時間源碼閱讀

鏈接:XRefAndroid - Support Android 16.0 & OpenHarmony 5.0 (AndroidXRef/AospXRef) 這里看的Android 10的代碼,選中Android 10,勾選所有工程,搜索DateTimeSettings?: 看到showTimePicker應該是顯示一個設置時…

關于自定義域和 GitHub Pages(Windows)

GitHub Pages 支持使用自定義域,或將站點 URL 的根目錄從默認值(例如 )更改為您擁有的任何域,比如octocat.github.io。 誰可以使用此功能? GitHub Pages 在公共存儲庫中提供 GitHub Free 和 GitHub Free for organizations,在公共和私有存儲庫中提供 GitHub Pro、GitHub …

自動駕駛領域中的Python機器學習

數據預處理與特征工程 在自動駕駛系統中,數據是驅動決策的核心。從傳感器(如攝像頭、激光雷達、毫米波雷達)收集的原始數據通常包含噪聲、缺失值和異常值,需要進行系統的預處理。Python的pandas庫提供了強大的數據處理能力&#x…

PROFINET轉CAN通訊協議轉換速通汽車制造

在汽車系統領域之外,控制器局域網(CAN)總線技術亦廣泛應用于多種工業環境。其固有的穩健性、可靠性與靈活性,使其成為工業自動化及控制系統中設備間通信的理想選擇。CAN 總線技術在工業應用中的關鍵領域包括機器控制、傳感器網絡以…

影刀RPA_小紅書筆記批量采集_源碼解讀

一、項目簡介本項目是一個基于影刀RPA的小紅書筆記批量采集工具,能夠通過兩種模式獲取小紅書平臺的軟文數據:搜索內容抓取和自定義鏈接抓取。工具使用Chrome瀏覽器自動化技術,實現了從網頁數據采集、解析到Excel導出的完整流程。支持獲取筆記…

以使命為帆,結業是重新出發的號角

站在私教班結業典禮的講臺上,望著眼前一張張閃爍著力量的面孔,我心中始終縈繞著一個信念:所有的相遇,都是為了共同奔赴一件更有意義的事。今天不是終點,而是 “使命的啟程”—— 我們因不甘而相聚:不甘心行…

java測試題(下)

1. Spring 核心概念1.1 如何理解 Spring DI?DI(依賴注入) 是 IoC(控制反轉) 的具體實現方式,由 Spring 容器在運行時通過以下方式自動注入依賴:構造器注入(推薦)Setter 注…

LC振蕩Multisim仿真

電路圖:說明:點擊仿真后,先打開S1,可以看到C1的充電曲線。當電容充滿電后,關閉S1,打開S2,這時候,C2電容會快速獲得C1一半的電量。如果沒有L,曲線會變得很陡。如果只加入電…

五、Web開發

文章目錄1. SpringMVC自動配置概覽2. 簡單功能分析2.1 靜態資源訪問2.1.1 靜態資源目錄2.1.2 靜態資源訪問前綴2.1.3 webjar2.2 歡迎頁支持2.3 自定義 Favicon2.4 靜態資源配置原理2.4.1 配置類只有一個有參構造器2.4.2 資源處理的默認規則2.4.3 歡迎頁的處理規則2.4.4 favicon…

Mysql 二進制安裝常見問題

1. mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory在centos9中升級了libncurses.so的版本為libncurses.so.6,所以找不到libncurses.so.5需要使用軟連接指向libncurses.so.6ln -s /lib6…

OpenLayers 綜合案例-點位聚合

看過的知識不等于學會。唯有用心總結、系統記錄,并通過溫故知新反復實踐,才能真正掌握一二 作為一名摸爬滾打三年的前端開發,開源社區給了我飯碗,我也將所學的知識體系回饋給大家,助你少走彎路! OpenLayers…