Docker技術概論(2):Docker環境的搭建

Docker技術概論(2)
Docker環境的搭建

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/136359535
HuaWei:https://bbs.huaweicloud.com/blogs/422806

【介紹】:本文介紹Docker安裝與配置。

在這里插入圖片描述


上一節:《 Docker與虛擬化技術比較 | 下一節:《 Docker 中的基本概念


1. 概述

上一篇文章中,我們比較了兩種不同的虛擬化技術——虛擬機 和 Docker。前者是基于硬件的虛擬化技術而后者則是基于系統的虛擬化技術。

Docker 是一個開源的應用容器引擎,允許開發者打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。幾乎沒有性能開銷,可以有效地利用系統資源。

Docker 的使用可以極大地簡化應用的部署和管理過程,使得應用的分發、測試以及版本控制更加簡單高效。隨著云計算和微服務架構的普及,Docker 的重要性日益凸顯,成為現代軟件開發不可或缺的工具之一。

在開始正式使用Docker之前,我們需要現在一臺電腦上安裝Docker,安裝Docker的首選是 Linux 環境,文本接下來將具體介紹Docker的安裝過程。

2. 在Linux上安裝Docker

本節以Ubuntu為例,介紹如何在Linux上安裝Docker的。

2.1 當前版本Ubuntu系統上的安裝

在最新的Ubuntu發行版上,可以直接使用apt工具安裝Docker

sudo apt update
sudo apt install -y docker.io

安裝完成后,你可以使用docker -v命令來檢驗是否安裝成功

在這里插入圖片描述

2.2 針對于比較舊的Ubuntu版本

對于某些較舊的Ubuntu版本或特定的發行版,Docker官方建議使用它們提供的存儲庫來安裝,以確保獲得最新的Docker版本和最新的安全更新。

這里介紹使用Docker官方存儲庫進行安裝的步驟。

更新包列表

在安裝Docker之前,首先要確保你的Ubuntu系統的軟件包列表是最新的。使用以下命令更新:

sudo apt update
安裝依賴包

Docker需要一些依賴包來正常運行。你可以使用以下命令安裝這些依賴包:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
添加Docker官方GPG密鑰

Docker官方提供了一個GPG密鑰,用于驗證其軟件包的真實性。使用以下命令添加官方GPG密鑰:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加Docker存儲庫

接下來,你需要將Docker存儲庫添加到Ubuntu系統中。這可以通過以下命令來完成:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安裝Docker

現在,你已經添加了Docker存儲庫,可以使用以下命令來安裝Docker

apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

以上命令將安裝Docker引擎和相關組件。

啟動并啟用Docker服務

安裝完成后,你需要啟動并啟用Docker服務,以便它在系統啟動時自動啟動。使用以下命令執行這些操作:

sudo systemctl start docker
sudo systemctl enable docker
驗證Docker安裝

最后,你可以運行以下命令來驗證Docker是否成功安裝,并查看Docker版本信息:

docker -v

你將看到Docker版本信息的輸出,表示Docker已成功安裝在你的Ubuntu系統上。

在這里插入圖片描述

3. 在Windows上安裝Docker

在系統上,以一種完全可視化的方式完成安裝。和常見的 Windows 軟件安裝相似,需要先在官網上下載安裝包。Docker的官方網站地址為:https://www.docker.com/。

在這里插入圖片描述

在這里插入圖片描述

等待下載完成:

在這里插入圖片描述

找到下載好的文件,雙擊運行安裝程序:

在這里插入圖片描述

選擇相應配置,等待安裝完成:

在這里插入圖片描述

安裝結束后,點擊 “Close adn restart” 按鈕將會強制重啟計算機(而不是程序),因此如果你又其它重要工作需要先完成保存:

在這里插入圖片描述

計算機重啟后,當你第一次啟動 Docker for desktop 時,將進入設置向導頁面:

在這里插入圖片描述

這里直接選擇“Use recommended settings”(使用推薦的設置)即可。點擊“Finish”按鈕以完成初始設置。等待程序初始化完成后即可使用了:

在這里插入圖片描述

4. 不要在MacOS上學習Docker

這里我打算介紹在MacOS上安裝Docker,因為它是最晚兼容的一個平臺,且安裝過程基于與之前介紹的 WIndows Docker Desktop一樣。

雖然目前Docker Desktop已經拓展到了 MacOS平臺,但是后續很多功能都不會在該系統上操作。對于切圖工作者來說,蘋果推出的Mac系列產品擁有比較好的屏幕。但是對于敲命令為主的Docker工程師來說,這種東西完全是多余。并且Docker之后還需要學習K8s,很多東西都不是Mac能夠干的,從生產看,Mac既不好用、也無法用到底。如果像進一步學習,乘早丟棄切圖機,避免浪費時間。

Docker是基于Linux容器技術的,這意味著它在Linux環境下運行得最為自然,因此最理想的環境是Linux,這于是諸多服務器的標準環境。在MacOS上,Docker需要通過虛擬化技術(如HyperKit)來模擬Linux環境,這一額外的抽象層可能會導致性能損失,尤其是在資源密集型的應用場景中。

MacOS用戶在使用Docker時可能會遇到文件系統性能問題。由于Docker容器需要通過虛擬化層訪問Mac的文件系統,這可能會導致文件訪問速度較慢,尤其是在大型項目或需要頻繁讀寫文件的應用中。雖然Docker團隊和社區一直在努力優化這方面的性能,但這仍然是MacOS上使用Docker時需要考慮的一個因素。

Docker Desktop for Mac的安裝和運行還需要占用相對較多的系統資源,包括CPU和內存。對于那些資源有限的Mac用戶來說,這可能會影響到其他應用程序的運行效率。

當然以上僅僅是一些建議,也可以選擇在后續學習中踩坑,然后自行上社區尋早解決辦法,不過這很費時間,并且不會產生任何額外收益。

5. 結論

隨著技術的不斷進步和開發環境的日益復雜化,Docker 作為一種高效、便捷的容器化技術,已經成為了軟件開發和運維領域的重要工具。通過在不同的操作系統上安裝和配置 Docker,開發者可以輕松地構建、分發和運行任何應用,極大地提高了開發效率和應用的可移植性。

盡管在 MacOS 上使用 Docker 存在一定的性能和資源限制,但這并不妨礙 Docker 成為跨平臺應用開發和部署的強大工具。對于希望在 Linux 環境下獲得最佳性能和體驗的用戶,Linux 仍然是首選的操作系統。然而,對于那些習慣于 Windows 或 MacOS 環境的用戶,Docker 也提供了便捷的解決方案,使他們能夠在熟悉的環境中利用 Docker 的強大功能。

總之,無論是在 Linux、Windows 還是 MacOS 上,Docker 都為軟件的開發、測試和部署提供了前所未有的便利和效率,是現代軟件工程師工具箱中不可或缺的一部分。隨著 Docker 社區的不斷成長和技術的不斷進步,我們有理由相信,Docker 將繼續引領軟件開發和運維的未來趨勢。

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

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

相關文章

自動采集API壁紙系統源碼自適應手機端

HTML5響應式自動采集API壁紙系統源碼自適應手機端 瀑布流加載 源碼下載:https://www.qqmu.com/2303.html

InnoDB備份與恢復篇(1)-InnoDB的備份與還原策略

InnoDB數據庫的備份與還原策略 MySQL是一種廣泛使用的關系型數據庫管理系統,而InnoDB是MySQL的默認存儲引擎之一。在生產環境中,對于數據庫的備份和還原至關重要,以確保數據的安全性和可靠性。本文將介紹MySQL數據庫InnoDB引擎的備份與還原策…

七、有序的列表

描述 創建一個依次包含字符串P、y、t、h、o和n的列表my_list,先使用sorted函數對列表my_list進行臨時排序,第一行輸出排序后的完整列表,第二行輸出原始的列表。再使用sort函數對列表my_list進行降序排序,第三行輸出排序后完整的列…

yolov8漲點技巧,添加SwinTransformer注意力機制,提升目標檢測效果

目錄 摘要 SwinTransformer原理 代碼實現 YOLOv8詳細添加步驟 ymal文件內容 one_swinTrans three_swinTrans 啟動命令 完整代碼分享 摘要 Swin Transformer通過引入創新的分層注意力機制展現了其架構的獨特性,該機制通過將注意力區域劃分為塊并在這些塊內執…

小白的matlab簡單應用

基本概念 1、數組array 數組是一個更通用的數據結構,可以是一維、二維或多維的。 一維數組通常被稱為向量。 二維數組可以被視為矩陣。 多維數組可以用來表示更高維度的數據,例如三維數組可以表示一系列的矩陣。 用過的函數 20240229 1、讀取excel文件…

python_pyecharts_堆積圖

from pyecharts.charts import Bar from pyecharts import options as opts # 構建數據 x_data ["A", "B", "C", "D", "E"] y_data [10, 20, 30, 40, 50] z_data [5, 15, 25, 35, 45] # 創建堆積柱狀圖Bar實例 bar Bar(…

進階了解C++(4)——多態

在上篇文章中,簡單的介紹了多態中的概念以及其相關原理。本文將針對多態中其他的概念進一步進行介紹,并且更加深入的介紹關于多態的相關原理。 目錄 1. 抽象類: 2. 再談虛表: 3. 多繼承中的虛函數表: 1. 抽象類&am…

MySQL 用戶賬號遷移

文章目錄 前言1. 工具安裝1.1 下載安裝包1.2 編譯安裝 2. 用戶遷移后記 前言 有一個典型的使用場景,就是 RDS 下云大多數都是通過 DTS 進行數據傳輸的,用戶是不會同步到自建數據庫的。需要運維人員在自建數據庫重新創建用戶,如果用戶數量很多…

基于springboot+vue的在線考試與學習交流平臺

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

中小型水庫安全監測運營解決方案,筑牢水庫安全防線

我國水庫大壩具有“六多”的特點。第一,總量多。我國現有水庫9.8萬座,是世界上水庫大壩最多的國家。第二,小水庫多。我國現有水庫中95%的水庫是小型水庫。第三,病險水庫多。 目前,在我國水庫管理中,部分地方…

供應鏈|NUS覃含章MS論文解讀:數據驅動下聯合定價和庫存控制的近似方法 (二)

編者按 本次解讀的文章發表于 Management Science,原文信息:Hanzhang Qin, David Simchi-Levi, Li Wang (2022) Data-Driven Approximation Schemes for Joint Pricing and Inventory Control Models. https://doi.org/10.1287/mnsc.2021.4212 文章在數…

深度神經網絡聯結主義的本質

一、介紹 在新興的人工智能 (AI) 領域,深度神經網絡 (DNN) 是一項里程碑式的成就,突破了機器學習、模式識別和認知模擬的界限。這一技術奇跡的核心是一個與認知科學本身一樣古老的思想:聯結主義。本文深入探討了聯結主義的基本原理&#xff0…

c# this關鍵字

c#this關鍵字 1. 代表當前類的對象 class Father {public int Age { get; set; }public string Name { get; set; }public Father(int age, string name){this.Age age;this.Name name;}public void Test(){Console.WriteLine($"name:{this.Name },age:{this.Age }&qu…

實例:NX二次開發抽取平面以及標準柱面中心線

一、概述 最近體驗許多外掛,包括胡波外掛、星空外掛及模圣等都有抽取面的中心線,由于剛剛學習,我嘗試看看能不能做出來,本博客代碼沒有封裝函數,代碼有待改進,但基本可以實現相應的功能。 二、案例實現的功…

【web APIs】3、(學習筆記)有案例!

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、概念其他事件頁面加載事件元素滾動事件頁面尺寸事件 元素尺寸與位置 二、案例舉例電梯導航 前言 掌握阻止事件冒泡的方法理解事件委托的實現原理 一、概念…

SpringCloud Alibaba(保姆級入門及操作)

第一章 微服務概念 1.0 科普一些術語 科普一下項目開發過程中常出現的術語,方便后續內容的理解。 **服務器:**分軟件與硬件,軟件:類型tomcat這種跑項目的程序, 硬件:用來部署項目的電腦(一般性能比個人電腦好) **服務:**操作系統上術語:一個程序,開發中術語:一個…

數學建模【分類模型】

一、分類模型簡介 本篇將介紹分類模型。對于二分類模型,我們將介紹邏輯回歸(logistic regression)和Fisher線性判別分析兩種分類算法;對于多分類模型,我們將簡單介紹SPSS中的多分類線性判別分析和多分類邏輯回歸。 分…

Java面試題之并發

并發 1.并發編程的優缺點?2.并發編程三要素?3.什么叫指令重排?4.如何避免指令重排?5.并發?并行?串行?6.線程和進程的概念和區別?7.什么是上下文切換?8.守護線程和用戶線程…

<網絡安全>《60 概念講解<第七課 網絡模型OSI對應協議>》

1 OSI模型 OSI模型(Open Systems Interconnection Model)是一個由國際標準化組織(ISO)提出的概念模型,用于描述和標準化電信或計算系統的通信功能,以實現不同通信系統之間的互操作性。該模型將通信系統劃分…

【k8s管理--Helm包管理器】

1、Helm的概念 Kubernetes包管器 Helm是查找、分享和使用軟件構件Kubernetes的最優方式。 Helm管理名為chart的Kubernetes包的工具。Helm可以做以下的事情: 從頭開始創建新的chat將chart打包成歸檔tgz)文件與存儲chat的倉庫進行交互在現有的Kubernetes集群中安裝和…