主頁 >  其他 > 一文掌握Docker基礎知識

一文掌握Docker基礎知識

2021-07-23 10:02:10 其他

持更中…

什么是Docker?

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

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

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

容器不需要提前封裝一個系統,它共享宿主機,理解為作業系統的一個行程,

Docker 從 17.03 版本之后分為 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版)

官網:https://docs.docker.com/get-started/overview/

Docker前身LXC

LXC為Linux Container的簡寫,可以提供輕量級的虛擬化,以便隔離行程和資源,而且不需要提供指令解釋機制以及全虛擬化的其他復雜性,容器有效地將由單個作業系統管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有沖突的資源使用需求,
與傳統虛擬化技術相比,LXC的優勢在于:
(1)與宿主機使用同一個內核,性能損耗小
(2)不需要指令級模擬;
(3)不需要即時(Just-in-time)編譯;
(4)容器可以在CPU核心的本地運行指令,不需要任何專門的解釋機制;
(5)避免了準虛擬化和系統呼叫替換中的復雜性;
(6)輕量級隔離,在隔離的同時還提供共享機制,以實作容器與宿主機的資源共享
總結:Linux Container是一種輕量級的虛擬化的手段,
Linux Container提供了在單一可控主機節點上支持多個相互隔離的server container同時執行的機制,Linux Container有點像chroot,提供了一個擁有自己行程和網路空間的虛擬環境,但又有別于虛擬機,因為lxc是一種作業系統層次上的資源的虛擬化,

LXC與docker什么關系?
docker并不是LXC替代品,docker底層使用了LXC來實作,LXC將linux行程沙盒化,使得行程之間相互隔離,并且能夠控制各行程的資源分配,
在LXC的基礎之上,docker提供了一系列更強大的功能,

傳統虛擬化與容器技術對比

VM和container對比:
虛擬機運行的是一個完整的作業系統,通過虛擬機管理程式對主機資源進行虛擬訪問,相比之下需要的資源更多,
容器在linux上本機運行,并與其他容器共享主機的內核,它運行一個獨立的行程,不占用其他任何可執行檔案的記憶體,非常輕量,
在這里插入圖片描述
在這里插入圖片描述

Docker容器的優勢

對于開發人員:Build once、Run anywhere,
對于運維人員:Configure once、Run anything,

運維人員把容器做好,然后給開發人員,開發人員可以直接在上邊寫專案,然后可以直接上線,
Docker能夠將應用程式與基礎設施分開,以便可以快速交付軟體,使用 Docker,可以像管理應用程式一樣管理基礎設施,通過利用 Docker 的快速交付、測驗和部署代碼的方法,可以顯著減少撰寫代碼和在生產中運行代碼之間的延遲,

名詞解釋

鏡像images
docker鏡像就是一個只讀模板,其中包括運行應用程式所需要的所有內容包含代碼,運行時間,庫、環境變數、和組態檔每個鏡像有不同的標簽(tag),比如,一個鏡像可以包含一個完整的centos,里面僅安裝apache或用戶的其他應用,鏡像可以用來創建docker容器,用戶可以直接從其他人那里下一個已經做好的鏡像來直接使用,

容器containers
docker利用容器來運行應用,容器是從鏡像創建的運行實體,它可以被啟動,開始、停止、洗掉、每個容器都是互相隔離的,保證安全的平臺,可以將容器連接到一個或多個網路,為其附加存盤,甚至可以根據其當前狀態創建新映像,
可以控制容器的網路、存盤或其他底層子系統與其他容器或主機之間的隔離程度,
容器由其映像以及在創建或啟動它時提供給它的任何配置選項定義,
當容器被移除時,未存盤在持久存盤中的對其狀態的任何更改都會消失,
當被運行時有鏡像狀態和用戶行程,可以使用docker ps 查看,

守護行程Daemon / dockerd
Docker 守護行程偵聽 Docker API 請求并管理 Docker 物件,例如影像、容器、網路和卷,守護行程還可以與其他守護行程通信以管理 Docker 服務,
Docker Client通過命令列與Docker Damon通信,完成Docker相關操作,

注冊表registry
存盤 Docker 鏡像,Docker Hub 是一個任何人都可以使用的公共注冊中心,Docker 默認配置為在 Docker Hub 上查找鏡像,甚至可以運行自己的私有注冊表,使用docker pull或docker run命令時,所需的映像將從配置的注冊表中提取使用docker push命令時,映像會被推送到配置的注冊表中

repostory倉庫
倉庫是集中存盤鏡像檔案的地方,registry是倉庫主從服務器,
倉庫分為兩種,公有參考,和私有倉庫,最大的公開倉庫是docker Hub,存放了數量龐大的鏡像供用戶下載,國內有docker pool,這里倉庫的概念與Git類似,registry可以理解為github這樣的托管服務,

Docker Compose
Compose 是用于定義和運行多容器 Docker 應用程式的工具,通過 Compose,可以使用 YML 檔案來配置應用程式需要的所有服務,然后,使用一個命令,就可以從 YML 檔案配置中創建并啟動所有服務,
Compose 使用的三個步驟:
1、使用 Dockerfile 定義應用程式的環境,
2、使用 docker-compose.yml 定義構成應用程式的服務,這樣它們可以在隔離環境中一起運行,
3、最后,執行 docker-compose up 命令來啟動并運行整個應用程式,

Docker架構

Docker 使用客戶端-服務器架構Docker客戶端與 Docker守護行程對話, Docker守護行程負責構建、運行和分發 Docker 容器的繁重作業,Docker 客戶端和守護程式可以在同一系統上運行,或者可以將 Docker 客戶端連接到遠程 Docker 守護程式,Docker 客戶端和守護行程使用 REST API、UNIX 套接字或網路介面進行通信,另一個 Docker 客戶端是 Docker Compose,它允許使用由一組容器組成的應用程式,

通過上面名詞解釋我們掌握了一些基本概念,在此基礎上,我們簡單解讀一下該圖:
Docker Client通過命令列與Docker Damon(守護行程)通信,
客戶端輸入docker build命令后,守護行程收到后會執行去創建一個新的鏡像,
客戶端輸入docker pull命令后,守護行程會從配置的注冊表(即倉庫)中提取用戶所需的鏡像并將其拉取到主機,
客戶端輸入docker run命令后,守護行程會根據要運行的容器,去找相應鏡像然后在容器上運行,
在這里插入圖片描述

鏡像的分層結構

在這里插入圖片描述
容器共享宿主機的Kernel,Base Image鏡像提供的是最小的Linux發行版,同一docker主機支持運行多種Linux發行版(即base鏡像之上的多層新的鏡像),
采用分層結構的最大好處是:共享資源!
新鏡像是從 base 鏡像一層一層疊加生成的,每安裝一個軟體,就在現有鏡像的基礎上增加一層, 比如:有多個鏡像都從相同的 base 鏡像構建而來,那么 Docker Host 只需在磁盤上保存一份 base 鏡像;同時記憶體中也只需加載一份 base 鏡像,就可以為所有容器服務了,而且鏡像的每一層都可以被共享
在這里插入圖片描述
當容器啟動時,一個新的可寫層被加載到鏡像的頂部,這一層通常被稱作“容器層”,“容器層”之下的都叫“鏡像層”,
所有對容器的改動 - 無論添加、洗掉、還是修改檔案都只會發生在容器層中
鏡像層數量可能會很多,所有鏡像層會聯合在一起組成一個統一的檔案系統,如果不同層中有一個相同路徑的檔案,比如 /a,上層的 /a 會覆寫下層的 /a,也就是說用戶只能訪問到上層中的檔案 /a,在容器層中,用戶看到的是一個疊加之后的檔案系統,讀取/修改/洗掉檔案都會從鏡像層依次從上至下查找,讀到符合的就執行,
容器層記錄對鏡像的修改!!!所有鏡像層都是只讀的,不會被容器修改,所以鏡像可以被多個容器共享,
一個鏡像最多127層,

Docker倉庫

Docker 倉庫是用來包含鏡像的位置,Docker提供一個注冊服務器 (Register)來保存多個倉庫,每個倉庫又可以包含多個具備不同 tag的鏡像, Docker運行中使用的默認倉庫是 Docker Hub 公共倉庫,docker hub是docker公司維護的公共倉庫,用戶可以免費使用,也可以購買私有倉庫,

Registry 作業原理

一次docker pull 或 push背后發生的事情:
在這里插入圖片描述
index服務主要提供鏡像索引以及用戶認證的功能,
當下載一個鏡像的時候,首先會去index服務上做認證,然后查找鏡像所在的registry的地址發回給 docker客戶端,docker客戶端再從registry下載鏡像,在下載程序中registry會去index校驗客戶端token的合法性,index回傳給registry客戶端token,如果一樣,將用戶需要的回傳給用戶,
不同鏡像可以保存在不同的registry服務上, 其索引資訊都放在index服務上,

Docker Registry有三個角色,分別是index、registry和registry client,
? index ? 負責并維護有關用戶帳戶、鏡像的校驗以及公共命名空間的資訊
? registry ? 是鏡像和圖表的倉庫,它不具有本地資料庫以及不提供用戶認證,通過 Index Auth service的Token的方式進行認證,
? Registry Client ? Docker充當registry客戶端來維護推送和拉取,以及客戶端的授權,
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289724.html

標籤:其他

上一篇:在新服務器上安裝python環境

下一篇:Git的使用教程(詳細)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more