Docker基礎教程 - 1 Docker簡介

更好的閱讀體驗:點這里 ( www.doubibiji.com

1 Docker簡介

Docker是一個強大的容器化平臺,讓你能夠更輕松地構建、部署和運行應用程序。

下面我們來學習 Docker。


1.1 Docker是什么

1 現在遇到的問題

  • 每次部署一臺服務器,需要安裝各種依賴,配置各種環境,十分麻煩;
  • 應用程序在我的電腦上運行完全沒有問題,你說在你的電腦上不行,環境或配置不同導致的各種問題;
  • 由于開發、測試和生產環境配置不一致,導致在生產環境中出現了在開發環境中未曾出現的bug;
  • 一臺服務器,硬件大部分時間處于閑置狀態,資源被浪費;
  • 等等…

2 虛擬機技術

使用虛擬機,我們可以使用同一個鏡像文件,創建多個虛擬機,多個虛擬機的環境和配置是一模一樣的,這樣就不會存在多個虛擬機環境不一樣的問題了。

3 Docker是怎么解決的

Docker 和虛擬機的思路是類似的,Docker 將應用程序及其依賴項打包成鏡像,鏡像包含了應用程序所需的所有內容,包括代碼、運行時環境、系統工具、庫和依賴項。開發者可以在本地構建鏡像,并將其部署到任何地方,無需擔心環境差異導致的問題。

虛擬機技術將鏡像運行為一個個獨立的虛擬機,Docker 引擎將鏡像運行成一個個的容器,每個容器也是相互隔離,互不影響,確保了應用程序的安全性和穩定性。

總的來說,Docker通過其容器化技術,將應用程序和運行它所需要的環境、依賴等打包成鏡像,這樣就沒有環境問題了。

舉個栗子:

我們可以直接下載 Redis 鏡像,一條語句將鏡像運行起來,就可以直接使用了,不需要復雜的安裝。我們的項目需要 Redis、MySql、JDK、RabbitMQ,我們可以直接將項目、Redis、Mysql、JDK、RabbitMQ 所有的這些打包成一個鏡像,部署在各個機器上,就不需要一個個服務器安裝環境了,聽著是多么的順耳。

4 Docker與虛擬機技術的不同

  1. 虛擬化層次
  • 虛擬機技術: 使用Hypervisor(如VMware、VirtualBox等)在物理服務器上創建多個完整的虛擬機。每個虛擬機都包含了自己的操作系統、內核和用戶空間,相互獨立。
  • Docker: 利用宿主機的操作系統內核,并在其之上運行容器。容器與宿主機共享同一個操作系統內核,但各自擁有自己的用戶空間。這使得容器更為輕量級。
  1. 資源利用方式
  • 虛擬機技術: 每個虛擬機需要獨立的操作系統,因此較為笨重,占用更多資源。多個虛擬機在同一物理機上運行時,會占用更多的內存和硬盤空間,隨隨便便20、30G的占用空間。
  • Docker: 容器共享宿主機的操作系統,不需要額外的操作系統虛擬化,因此更為輕量級。它們利用相同的內核和資源,節省了資源,并允許更多容器在同一臺機器上運行。
  1. 啟動時間和性能
  • 虛擬機技術: 虛擬機啟動需要較長時間,因為需要啟動完整的操作系統。
  • Docker: 容器啟動速度更快,因為它們不需要啟動完整的操作系統,只需啟動應用及其依賴項即可。
  1. 環境隔離
  • 虛擬機技術: 虛擬機提供了完全隔離的環境,每個虛擬機都是相對獨立的。
  • Docker: 容器也提供了良好的隔離性,但與虛擬機相比,容器之間的隔離度略低。

總體來說,Docker相對于傳統虛擬機技術更為輕量級、啟動更快、資源利用更高效,因為它利用了宿主機的操作系統內核,并通過容器實現了更好的資源共享和隔離。使得應用程序能夠更便捷、高效、一致地部署和運行,解決了環境一致性、快速部署、資源利用率、版本控制、隔離性等多個方面的問題。

1.2 Docker 三要素

在學習操作 Docker 之前,先介紹一下 Docker 中的基礎概念。

  • 鏡像
  • 容器
  • 倉庫

先用一句話解釋:我們從倉庫中下載鏡像,然后運行鏡像成為容器,一個鏡像可以運行多次形成多個容器實例。


1 鏡像(image)

鏡像是一個靜態的、只讀的文件,其中包含了應用程序運行所需的所有內容,如代碼、運行時環境、系統工具、庫和依賴項。它是一個模板,用來創建容器。

使用一個鏡像可以創建多個容器。所以用面向對象的方式來比喻的話,鏡像就是類,容器就是使用類創建的一個一個實例。


2 容器(container)

容器是鏡像的運行時實例,相當于面向對象中的一個個的對象實例。

當你運行一個鏡像時,Docker會創建一個容器。它提供了一個隔離的環境,讓應用程序可以在其中運行。

所以容器可以被理解為一個隔離的、獨立的運行時環境,其中包含了應用程序及其運行所需的一切。


3 倉庫(repository)

倉庫就是存放鏡像的地方,倉庫分為公有倉庫和私有倉庫。

Docker 公司提供了公共的鏡像倉庫 https://hub.docker.com,里面提供了大量的鏡像可以給我們給我們使用,我們也可以基于別人的鏡像來創建我們自己的鏡像。但是國內訪問 dockerhub 速度比較慢,一般使用阿里云或網易云。


在使用 docker run 運行鏡像的時候,docker 會檢查本機是否存在鏡像,如果存在就使用這個鏡像運行為一個容器,而如果不存在,就會去 Docker Hub上下載,下載完成,再運行這個鏡像。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

我們一般不會直接運行一個本機不存在的鏡像,我們一般會先搜索鏡像,找到鏡像后,將鏡像下載下來,然后再通過鏡像創建容器運行。

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

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

相關文章

CSS 入門指南(一)CSS 概述

CSS 概述 CSS 介紹 CSS(Cascading Style Sheets)通常稱為 CSS 樣式或層疊樣式表,是一種用來為結構化文檔(如 HTML 文檔或 XML 應用)添加樣式(字體、間距和顏色等)以及版面的布局等外觀顯示樣式…

《MySQL數據庫》day1

文章目錄 1.名詞解釋2.如何啟動mysql數據庫3.mysql常用命令4.數據庫當中最基本的單元是表:table5.關于SQL語句的分類6.簡單查詢7.條件查詢8.排序9.數據處理函數單行處理函數常見的有哪些? 10.分組函數(多行處理函數) 1.名詞解釋 …

VUE2與VUE3之間的主要區別

當談到 Vue.js 的版本時,Vue 2 和 Vue 3 是最常被提及的兩個版本。下面是 Vue 2 和 Vue 3 之間的一些主要區別: 1. 性能提升: Vue 3 在底層核心重寫了響應式系統,采用了 Proxy 對象,大幅提高了性能。Vue 3 還引入了靜…

徹底解決華為手機安裝谷歌框架后出現未認證的彈窗問題

引言 本人使用華為手機通過B站等平臺學習如何安裝谷歌框架與商店后,發現安裝谷歌框架后出現未認證的彈窗問題少有解決辦法,而且容易復發,在借鑒相關視頻后找到解決辦法,但視頻中的華谷框架需要付費才能使用,本文將提出…

spring注解驅動系列--自動裝配

Spring利用依賴注入(DI),完成對IOC容器中中各個組件的依賴關系賦值;依賴注入是spring ioc的具體體現,主要是通過各種注解進行屬性的自動注入。 一、Autowired:自動注入 一、注解介紹 1、默認優先按照類型去…

高中數學:函數奇偶性

一、定義 偶函數:定義域關于原點對稱,圖像關于Y軸對稱 f(x)f(-x) 奇函數:定義域關于原點對稱,圖像關于原點中心對稱 f(x)f(-x)0 等價于 f(-x)-f(x) 二、函數奇偶性的四種情況 注意: 即奇又偶的函數,只有…

Linux入門到入土

Linxu Linux 簡介 Linux 內核最初只是由芬蘭人林納斯托瓦茲(Linus Torvalds)在赫爾辛基大學上學時出于個人愛好而編寫的。 Linux 是一套免費使用和自由傳播的類 Unix 操作系統,是一個基于 POSIX(可移植操作系統接口&#xff09…

【復現】宏景HCM 任意文件讀取漏洞_63

目錄 一.概述 二 .漏洞影響 三.漏洞復現 1. 漏洞一: 四.修復建議: 五. 搜索語法: 六.免責聲明 一.概述 宏景HCM 將人才標簽技術應用于員工招聘、人才選拔等環節,通過多維度的標簽體系,形成不同專業序列的人才畫…

CV | 醫學影像上的圖像分割模型調研【更新于20240304】

mamba相關的圖像分割:VM-Unet,Manba-Unet,BRAU-Net,MDD-Unet,EGE-Unet,U-Mamba 2024.01.01_BRAU-Net Paper:BRAU-Net: U-Shaped Hybrid CNN-Transformer Network for Medical Image Segmentation https://arxiv.org/pdf/2401.00722.pdf 2024.01.09_U-Mamba Paper:U…

猴子吃桃問題(python版)

文章預覽: 題目python解法一:運行結果 python解法二:運行結果 python解法三:運行結果 題目 猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。 第二天早…

python 腳本設置輸出顏色

在Python腳本中設置輸出顏色,通常可以使用colorama庫,它可以在Windows、Linux和macOS等平臺上工作。colorama庫擴展了Python的標準庫,使得在控制臺輸出彩色文本更加簡單。 首先,你需要安裝colorama庫。如果你還沒有安裝&#xff…

數據倉庫 vs. 數據湖:解析兩者的區別與優劣

在當今數字化時代,數據成為了企業最寶貴的資產之一。為了更好地管理和利用數據,企業需要建立合適的數據存儲和管理系統。在這個過程中,數據倉庫和數據湖成為了兩種常見的選擇。雖然它們都旨在幫助企業管理數據,但在實際應用中&…

flurl升級之后沒有FlurlNewtonsoftJsonSerializer

新建NewtonsoftJsonSerializer.cs /// <summary> /// ISerializer implementation based on Newtonsoft.Json. /// Default serializer used in calls to GetJsonAsync, PostJsonAsync, etc. /// </summary> public class NewtonsoftJsonSerializer : IJsonSerial…

Qt 簡約美觀的加載動畫 第九季

這次和大家分享6個非常清爽的加載動畫. &#x1f60a; 效果如下 &#x1f60a; 一共三個文件 , 可以直接編譯運行的呢 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc, char *argv[]) …

原理篇-- 定時任務xxl-job-服務端(admin)項目啟動過程--JobTriggerPoolHelper 初始化 (3)

文章目錄 前言一、JobTriggerPoolHelper 作用&#xff1a;二、JobTriggerPoolHelper 源碼介紹&#xff1a;2.1. start() 方法&#xff1a;2.2 任務觸發&#xff1a;2.3 XxlJobTrigger.trigger 任務執行&#xff1a;2.4 processTrigger 任務的執行&#xff1a;2.5 runExecutor 任…

【JAVA重要知識 | 第三篇】深入理解并暴打AQS原理、ReentrantLock鎖

文章目錄 3.深入理解AQS、ReentrantLock3.1AQS3.1.1AQS簡介3.1.2核心結構&#xff08;1&#xff09;設計模型&#xff08;2&#xff09;組成部分&#xff08;3&#xff09;State關鍵字 3.1.3實現的兩類隊列&#xff08;1&#xff09;同步隊列①CLH②Node③主要行為 img條件隊列…

中霖教育:注冊安全工程師考是科目有哪些?

注冊安全工程師的類型是職業資格證書&#xff0c;需要滿足報名條件才能參加考試&#xff0c;考試通過就能發放證書。報名時間一般在八月份&#xff0c;考試時間在十月底左右。 考試科目&#xff1a; 《安全生產法律法規》 《安全生產管理》 《安全生產技術基礎》 《安全生…

golang實現openssl自簽名雙向認證

第一步&#xff1a;生成CA、服務端、客戶端證書 1. 生成CA根證書 生成CA證書私鑰 openssl genrsa -out ca.key 4096創建ca.conf 文件 [ req ] default_bits 4096 distinguished_name req_distinguished_name[ req_distinguished_name ] countryName …

Node.js基礎---Express路由

1. 路由的概念 1. 什么是路由 廣義上來講&#xff0c;路由就是映射關系 2. Express 中的路由 在 Express 中&#xff0c;路由指的是客戶端的請求與服務器處理函數之間的映射關系 Express 中的路由分三部分&#xff1a;請求的類型、請求的URL地址&#xff0c;處理函數。如下&am…

怎么使用curl2py自動構造爬蟲代碼并進行網絡爬蟲

目錄 一、了解curl2py 二、安裝curl2py 三、使用curl2py生成爬蟲代碼 四、實際案例&#xff1a;爬取網頁數據 五、總結與建議 在當今數據驅動的時代&#xff0c;網絡爬蟲成為了獲取數據的重要工具。對于初學者來說&#xff0c;手動編寫爬蟲代碼可能是一項挑戰。幸運的是&a…