docker01-簡介和概述

什么是docker?

我們現在開發項目是在windows操作系統使用idea開發,本地windows操作系統上有我們項目所需的jdk,mysql,redis,tomcat等環境,如果我們想打包我們的項目到一個別的服務器上,在別的服務器上能運行,同樣的也需要這些環境,但是我們如果在工作過程中去帶著項目去在別人那里演示,沒有這樣的環境,我們該怎么辦?

這時候就用到了我們的docker容器了,docker就相當于一個簡易的微量的操縱系統,我們可以在docker中安裝我們的環境,然后把項目打包部署到docker中。到時候在容器中運行就行了

下面是docker的官方一點的解釋:

1.Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從 Apache2.0 協議開源。Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。

2. Docker的主要目標是‘build ,ship and run any app,anywhere’,也就是說通過對應用程序組件的封裝,分發,部署,運行等生命周期的管理。使用戶的app(可以是一個web應用程序或者數據庫應用等)及其運行環境能夠做到‘一次封裝,到處運行’。

3.Linux容器技術的出現解決了這個問題。而docker就是基于他的基礎上發展過來的。將應用運行到docker容器上面,而docker容器在任何操作系統上都是一致的,這就是實現跨平臺跨服務器。只需要一次配置好環境,換到別的機子上就可以一鍵部署好,大大簡化了操作。

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

5.Docker 從 17.03 版本之后分為 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版),我們用社區版就可以了。

總結:Docker實際上就是一個虛擬化輕量級linux服務器,可以解決我們在開發環境中運行配置問題。

為什么使用docker?

Docker:虛擬化容器技術

Docker主要解決我們開發環境配置遷移的問題。

1.解決項目運行需要依賴很多環境的問題

本地運行項目需要多少環境,部署到服務器上同樣需要多少環境。

2.解決依賴的版本沖突問題

有時候可能會發生這些問題:我在本地運行環境沒有問題,但是打包到Linux服務器運行總是遇到很多錯誤,大多數由于一些版本沖突影響。

在這時候我們就可以使用docker部署和安裝軟件就非常方便,直接將該springboot項目制作成一個鏡像文件,鏡像文件中包含jdk版本 tomcat版本信息 ?直接部署linux即可,減少依賴沖突概率。

以安裝MySQL避免環境沖突為例:

Linux安裝MySQL:阿里云、騰訊云 linux系統安裝mysql 5.7_mysql57哪個版本適用阿里云-CSDN博客

在對比docker安裝mysql

docker pull mysql:5.7 docker create --name mysql3308 -e MYSQL_ROOT_PASSWORD=root -p 3308:3306 mysql:5.7

Docker最終解決了運行環境配置中的問題。----鏡像文件底層封裝好了

使用docker的優缺點?

優點

1.簡化不同環境配置差異虛擬機的最大好處是能在你的硬件設施上運行各種配置不一樣的平臺(軟件, 系統), Docker在降低額外開銷的情況下提供了同樣的功能. 它能讓你將運行環境和配置放在代碼匯總然后部署, 同一個Docker的配置可以在不同的環境環境中使用, 這樣就降低了硬件要求和應用環境之間耦合度。

2.代碼流水線管理代碼從開發者的機器到最終在生產環境上的部署, 需要經過很多的中間環境,而每一個中間環境都有自己微小的差別, Docker給應用提供了一個從開發到上線均一致的環境, 讓代碼的流水線變得簡單不少。

3.提升開發效率不同環境中, 開發者的共同目標:(1)讓開發環境盡量貼近生產環境.(2)快速搭建開發環境開發環境的機器通常內存比較小, 之前使用虛擬的時候, 我們經常需要為開發環境的機器加內存, 而現在Docker可以輕易的讓幾十個服務在Docker中跑起來。

4.隔離應用開發時會在一個臺機器上運行不同的應用.(1) 為了降低成本, 進行服務器整合(2)將一個整體式的應用拆分成低耦合的單個服務(微服務架構)

5.整合服務器Docker隔離應用的能力使得Docker可以整合多個服務器以降低成本。由于沒有多個操作系統的內存占用, 以及能在多個實例之間共享沒有使用的內存, Docker可以比虛擬機提供更好的服務器整合解決方案。

6.調試能力Docker提供了很多的工具, 這些工具不一定只是針對容器, 但是卻適用于容器. 他們提供了很多功能, 包括可以為容器設置檢查點, 設置版本, 查看兩個容器之間的差別, 這些特性可以幫助調試Bug.

7.多租戶環境多租戶環境的應用中, 它可以避免關鍵應用的重寫.我們一個特別的關于這個場景的例子是為loT(物聯網)的應用開發一個快速, 易用的多租戶環境. 這種多租戶的基本代碼非常復雜, 很難處理, 重新規劃以應用不但消耗時間, 也浪費金錢.

使用Docker, 可以為每一個租戶的應用層的多個實例創建隔離的環境, 這不僅簡單而且成本低廉, 因為Docker環境啟動的速度快, diff命令很高效.

8.快速部署Docker為進程創建一個容器, 不需要啟動一個操作系統, 時間縮短為秒級別.可以在數據中心創建銷毀資源而無須擔心重新啟動帶來的開銷. 通常數據中心的資源利用率只有30% , 通過使用Docker并進行有效的資源分配可以提高資源的利用率。

9.環境標準化和版本控制Docker容器可以在不同的開發與產品發布生命周期中確保一致性,進而標準化你的環境。除此之外,Docker容器還可以像git倉庫一樣,可以讓你提交變更到Docker鏡像中并通過不同的版本來管理它們。設想如果你因為完成了一個組件的升級而導致你整個環境都損壞了,Docker可以讓你輕松地回滾到這個鏡像的前一個版本。這整個過程可以在幾分鐘內完成,如果和虛擬機的備份或者鏡像創建流程對比,那Docker算相當快的,它可以讓你快速地進行復制和實現冗余。此外,啟動Docker就和運行一個進程一樣快。

缺點:

必須是64位機器上運行,目前僅支持 x86_64和AMD64,32系統不支持.

  • 系統的Linux內核必須是3.8或者更高,內核支持Device Mapper,AUFS,VFS,btrfs等存儲格式.
  • 內核必須支持cgroups和命名空間.

應用場景

1.Web 應用的自動化打包和發布。

2.自動化測試和持續集成、發布。

3.在服務型環境中部署和調整數據庫或其他的后臺應用。

4.從頭編譯或者擴展現有的 OpenShift 或 Cloud Foundry 平臺來搭建自己的 PaaS 環境。

容器與虛擬機區別

什么是虛擬機:在一臺物理機器上,利用虛擬化技術,虛擬出來多個操作系統,每個操作系統之間是隔離的。

從下到上理解上圖:

最下面的一層就是物理機,可以是服務器,設置是一臺個人電腦;

電腦上需要安裝操作系統,比如我們安裝了win10的操作系統;

再往上就是虛擬機軟件了,比如我們常用的VirtualBox、VMWare,它們的作用是模擬計算機硬件;

繼續向上,就是虛擬機模擬出來的操作系統了;

在虛擬的操作系統中,安裝所需的軟件、組件等。比如我們需要在虛擬操作系統中安裝JDK、Tomcat等;

最后就是具體的應用了,例如部署到Tomcat中。?

Docker :Docker是開源的應用容器引擎

依然從下往上看:

最下面兩層,概念同上。

往上,可以看做Docker容器的管理器。

依賴和應用都被打包成了Docker鏡像。例如,JDK、Tomcat、應用都被打包在了一起,運行在Docker容器里,容器和容器間是隔離的

Docker和虛擬機的區別

1.從兩者的架構圖上看,虛擬機是在硬件級別進行虛擬化,模擬硬件搭建操作系統;而Docker是在操作系統的層面虛擬化,復用操作系統,運行Docker容器。

2.Docker的速度很快,秒級,而虛擬機的速度通常要按分鐘計算。

3.Docker所用的資源更少,性能更高。同樣一個物理機器,Docker運行的鏡像數量遠多于虛擬機的數量。

4.虛擬機實現了操作系統之間的隔離,Docker是進程之間的隔離,虛擬機隔離級別更高、安全性方面也更強。

5.虛擬機和Docker各有優勢,不存在誰替代掉誰的問題,很多企業都采用物理機上做虛擬機,虛擬機中跑Docker的方式。

特性

容器

虛擬機

啟動速度

秒級

分鐘級別

硬盤使用

一般為MB

一般GB

性能

接近原生

弱于

系統支持量

單機支持上千個容器

一般幾十個

隔離性

完全隔離

完全隔離

Docker官網

Docker Docs

Docker: Accelerated Container Application Development

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

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

相關文章

【Apache POI】Apache POI-操作Excel表格-簡易版

Catalog Apache POI-操作Excel表格1. 需求2. 優點3. 缺點4. 應用場景5. 使用方法6. SpringBoot工程中處理Excel表格7. Demo示例 Apache POI-操作Excel表格 1. 需求 大多數項目的在運營過程中,會產生運營數據,如外賣系統中需要統計每日的訂單完成數、每…

SpringBoot實現圖片驗證碼

引入依賴 <dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version> </dependency>代碼實現 package com.qiangesoft.captcha.controller;import com.wf.captcha.*…

最少數量線段覆蓋-華為OD

系列文章目錄 文章目錄 系列文章目錄前言一、題目描述二、輸入描述三、輸出描述四、java代碼五、測試用例 前言 本人最近再練習算法&#xff0c;所以會發布一些解題思路&#xff0c;希望大家多指教 一、題目描述 給定坐標軸上的一組線段&#xff0c;線段的起點和終點均為整數…

C++:類與對象—繼承

類與對象—繼承 一、繼承是什么&#xff1f;二、繼承定義三、基類和派生類對象賦值轉換四、繼承中的作用域五、派生類的默認成員函數六、繼承與友元七、繼承與靜態成員八、復雜的菱形繼承及菱形虛擬繼承九、繼承的總結和反思十、考察重點 一、繼承是什么&#xff1f; 繼承(inh…

知識付費系統需要哪些資質要求,教育機構教務工作計劃內容有哪些?

每個培訓教育機構都是由很多人員組成&#xff0c;作為教育機構&#xff0c;老師不必須&#xff0c;是必不可少的&#xff0c;但是除了老師之外還得配備一定數量的銷售人員和教務工作者&#xff0c;教務老師其實也就是搞后勤的&#xff0c;但是是必須的&#xff0c;那么教育機構…

Java的時間類

1. 日期類 1.1 第一代日期類 1) Date: 精確到毫秒&#xff0c;代表特定的瞬間 2) SimpleDateFormat: 格式和解析日期的類 SimpleDateFormat 格式化和解析日期的具體類。它允許進行格式化(日期-→>文本)、解析(文本->日期)和規范化. import java.text.ParseExce…

Java基礎(27)Web應用中web.xml文件中可以配置哪些內容

在Java Web應用中&#xff0c;web.xml文件&#xff08;也被稱為部署描述符&#xff09;是一個核心的配置文件&#xff0c;它位于應用的WEB-INF目錄下。web.xml文件中可以配置多種不同的組件和參數&#xff0c;它們用來定義和調整應用的行為。以下是一些web.xml中可以配置的內容…

Web3 Tools - 助記詞生成(完整代碼)

工具介紹 Web3Tools - 助記詞生成 完整代碼 代碼路徑 import React, { useState } from react; import Grid from mui/material/Grid; import Paper from mui/material/Paper; import Typography from mui/material/Typography; import Button from mui/material/Button; i…

接口自動化測試很難掌握嗎?

一. 什么是接口測試 接口測試是一種軟件測試方法&#xff0c;用于驗證不同軟件組件之間的通信接口是否按預期工作。在接口測試中&#xff0c;測試人員會發送請求并檢查接收到的響應&#xff0c;以確保接口在不同場景下都能正常工作。 就工具而言&#xff0c;常見的測試工具有…

AI+招聘:ATS招聘系統讓HR簡歷篩選精準度達95%!

一提起招聘過程&#xff0c;許多HR就會想到那堆疊如山的簡歷、讓人眼花繚亂的招聘網站以及瑣碎繁復的手動數據錄入。據統計&#xff0c;平均每位HR每年要處理數百甚至上千份簡歷&#xff0c;耗費大量精力在初級篩選和跟進上。   市場調查機構近日發布的一份報告顯示&#xff…

【深度學習】YOLO源碼中的mAP計算代碼的理解筆記(大部分代碼逐行+基礎解釋)

提示&#xff1a;本篇博客是在閱讀了YOLO源碼中的mAP計算方法的代碼后加上官方解釋以及自己的debug調試理解每一步是怎么操作的。由于是大部分代碼進行了逐行解釋&#xff0c;所以篇幅過長。 文章目錄 前言一、輸入格式處理1.1 轉換公式二、init&#xff1a;初始化2.1 iouv2.2 …

AND Sorting題解

AND Sorting題解 AND Sorting 詳細 題解()題目原意解題思路這是代碼??ZZZB. AND Sorting(我也是有底線的)AND Sorting 詳細 題解() 洛谷 原題,CF 原題 洛谷 AC記錄,CF AC記錄 題目原意 給你一個由從 0 0 0 到 n ? 1 n-1 n?1 的整數組成的排列 p p p (每個整數都…

如何在沒有頭文件的情況下調用動態庫的類的私有成員函數

如何在沒有頭文件的情況下調用動態庫的類成員函數 編寫一個不存在虛函數的類測試代碼 _ZN6CClass4showEv如何獲取調用 源代碼 https://github.com/TonyBeen/study/tree/master/dlopen 編寫一個不存在虛函數的類 // class.h #pragma onceclass CClass { public:CClass();~CCla…

【Leetcode每日一題】 綜合練習 - 電話號碼的字母組合(難度??)(75)

1. 題目解析 題目鏈接&#xff1a;電話號碼的字母組合 這個問題的理解其實相當簡單&#xff0c;只需看一下示例&#xff0c;基本就能明白其含義了。 2.算法原理 算法設計思路 在解決這類問題時&#xff0c;我們需要認識到每個位置上的數字對應的字符集合是相互獨立的&#…

什么是翹尾因素

在有關CPI 的分析文章和新聞稿件中&#xff0c;經常會出現“翹尾因素”或“翹尾影響” 等詞匯&#xff0c;這是分析同比價格指數變動幅度時所特有的概念。那么什么是“翹尾因素” 或“翹尾影響”呢&#xff1f; 一、什么是翹尾因素 “翹尾因素”是指上年價格上漲&#xff08;…

使用scrollIntoView滾動元素到可視區域

1. 實現效果 點擊頂部標簽欄&#xff0c;讓對應的內容出現在可視區域&#xff1a; 2. scrollIntoView () scrollIntoView 是一個內置的 JavaScript 方法&#xff0c;用于將元素滾動到視口可見的位置。它通常用于用戶界面中&#xff0c;以便用戶能輕松看到特定的元素。此方…

perf 中的 cpu-cycles event 介紹

perf 中的 cpu-cycles event 介紹 cycles簡介 cycles事件記錄處理器核心執行的時鐘周期數。每個時鐘周期代表處理器內部時鐘振蕩器的一個周期。這個事件通常用于衡量處理器的執行速度&#xff0c;因為它直接反映了指令執行所需的時間。一個較高的cycles計數可能意味著代碼執行…

JavaScript中指定大小分割數組的一種實現

今天分享一個使用JavaScript分割數組為多個自數組的方法實現。我使用它的場景如下&#xff1a; 給定一個數組 arr 和指定大小 fixed&#xff1a; const arr [{id: 1,name: name1},{id: 2,name: name2},{id: 3,name: name3},{id: 4,name: name4},{id: 5,name: name5},{id: 6,…

2024版本idea集成SpringBoot + Ai 手寫一個chatgpt 【推薦】

題目&#xff1a;SpringBoot OpenAi 在這里獲取key和url&#xff1a;獲取免費key base-url為這兩個&#xff1a; 話不多說直接來&#xff01; 一、簡介 Spring AI 是 AI 工程的應用框架。其目標是將 Spring 生態系統設計原則&#xff08;如可移植性和模塊化設計&#xff…

暗區突圍pc資格 暗區突圍pc端測試資格獲取

《暗區突圍》的誕生&#xff0c;仿佛在游戲界投下了一枚深水炸彈&#xff0c;它不僅僅是射擊游戲的新標桿&#xff0c;更是對玩家策略思維、生存直覺與團隊協作能力的一次全面考驗。在這個精心構建的虛擬戰場中&#xff0c;每一次踏入暗區&#xff0c;都是對未知的探索&#xf…