亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker的相關知識點有哪些

發布時間:2021-12-13 11:25:43 來源:億速云 閱讀:143 作者:iii 欄目:大數據

這篇文章主要講解了“Docker的相關知識點有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Docker的相關知識點有哪些”吧!

一、歡迎來到Docker世界

A.什么是Docker

1.容器:防止對受保護資源的訪問,隔離后有資源,除非明確允許

2.容器不是虛擬化:運行在Docker容器中的程序接口和主機的Linux內核直接打交道,可以幫助使用已經內置到操作系統中的容器技術

3.在隔離的容器中運行軟件:使用Linux命名空間和cgroups

4.分發容器:通過Docker鏡像(是一個容器中運行程序的所有文件的捆綁快照)

B.Docker解決了什么

1.組織有序:Docker保留了通過容器和鏡像進行隔離的所有一切

2.提高可移植性:

  • 將軟件以前無法使用的地方徹底解鎖

  • 可在任何系統上運行相同的軟件

  • 軟件維護人員可以集中精力在單一平臺和一套依賴關系中編寫他們的軟件

3.保護你的機器:容器限制了一個程序對其他程序帶來的影響范圍、可訪問的數據和系統資源的影響范圍

C.為什么Docker如此重要

1.Docker提供了所謂的抽象:允許你以簡化的方式處理復雜的工作,在使用Docker的前提下,不用再專注于與安裝應用程序相關的復雜性和細節 ,只考慮我們想安裝什么樣的軟件

2.有一個重要的推廣使用容器和Docker的軟件社區

3.為PC端所做的像應用商店 為移動設備所做的一樣

4.終于開始看到通過操作系統實現的更好、更先進的隔離功能

D.何時何處使用Docker

1.只能運行Linux操作系統上的應用程序,限定在Linux服務器或桌面上運行的軟件

2.每天的日常任務使用Docker有助于保持計算機的清潔

3.容器不能改善程序的安全,特別當不得不用最高權限訪問計算機的時候

二、在容器中運行軟件

A.從Docker命令行工具獲得幫助

1.docker help

2.docker help cp

B.控制容器:建立一個網站的監控器

1.守護進程:意味著它們將在后臺運行,而不連接到任何輸入或輸出流,非常適合那些在后臺靜默運行的程序,這些程序被稱為守護程序,使用—detach或-d

2.交互進程:—interactive或-I,—tty或-t

C.已解決的問題和PID命名空間

1.每一個運行的程序或進程,在Linux機器都有一個唯一編號,叫作進程標識符(PID),一個PID命名空間是一組識別進程的數字。Linux提供了工具可以創建多個PID命名空間,每個命名空間擁有一套完整的PID

D.消除元數據沖突:構建一個網站農場

1.docker create —cidfile /xxx/cid,創建但不運行,—cidfile保存cid到指定目錄文件

2.容器需要以其依賴關系鏈相反的順序來啟動,—link,循環依賴是不可能使用Docker容器來構建的

E.構建與環境無關的系統

1.Docker有三個特定功能建立與環境無關的系統:

  • 只讀文件系統:容器不能更改它所包含的文件,—read-only

  • 環境變量注入:環境變量來傳達相關信息,包括容器的守護選項、容器的主機名,以及他在容器中運行程序的實用信息,—env或-e

  • 存儲卷

*運行run -d --name wp3 --link wpdb:mysql -p 80 -v /run/lock/apache2/ -v /run/apache2 -v /tmp/ --read-only wordpress:4,書中少了-v /tmp/

F.建立持久化的容器

1.Docker容器四種狀態:運行、已暫停、重新啟動、已退出

2.自動重啟容器:—restart

3.使用init和supervisor進程維持容器的運行狀態:init、systemd、runit、upstart、supervisord

G.清理

1.列出所有容器:docker ps -a

2.刪除:docker rm xxx

3.快速全部消除:docker rm -vf $(docker ps -a -q)

三、軟件安裝的簡化

A.選擇所需的軟件

1.倉庫是一個有名字的鏡像桶,名字類似于URL

2.標簽是唯一指定鏡像的重要途徑,也是一種創建有用別名的便利方法

B.查找和安裝軟件

1.docker search xxx

2.注冊服務器,使用戶可不用考慮鏡像存儲和運輸的問題

3.docker load -i,加載鏡像文件,docker save,把鏡像保存到文件

4.docker rmi,刪除鏡像文件

C.安裝文件和隔離

1.鏡像層,一個鏡像層至少和一個其他的鏡像相關聯

2.鏡像維護著父/子關系。在這些依賴關系中,從父層構建形成新的一層。容器中的文件是鏡像所創建容器的所有層合集。鏡像可以與任何其他鏡像有依賴關系,包括為不同的所有者提供不同倉庫的鏡像

3.Union文件系統:容器中正在運行的程序對鏡像分層一無所知,仿佛該操作不是在容器中或操作鏡像上運行的。從容器角度看,它具有由鏡像所提供文件的獨占副本。其他工具還有MNT命名空間和chroot系統調用。

4.Linux內核提供了MNT系統命名空間,當docker創建一個容器,這個新的容器會有自己的MNT命名空間,以及為鏡像創建新的掛載點

5.chroot通過容器上下文來構建鏡像的根文件系統。可以防止運行于容器內的任何程序與主機系統的其他部分有所關聯

6.分層文件系統及其工具的優點:

  • 公共層僅需安裝一次

  • 分層提供了用于依賴管理和隔離的工具

  • 很容易地構建專業的軟件,因為你只要在某個基本鏡像上做些細微的變化就可以了

7.Union文件系統的不足:

  • 不同的文件系統對于文件屬性、大小、名稱和字符都有不同的規則

  • Union文件系統使用一種稱為寫時復制的模式,這使得內存映射文件(mmap()的系統調用)的實現比較困難

8.使用info命令來決定安裝哪些文件系統

四、持久化存儲和卷間狀態共享

A.存儲卷的簡介

1.存儲卷是容器目錄樹上的掛載點,其中一部分主機目錄樹已經被掛載了

2.從語義上來說,存儲卷是一個數據分割和共享的工具,有一個與容器無關的范圍或生命周期

3.鏡像適合打包和分發相對靜態的文件,如程序;存儲卷則持有動態或專門數據。這種區別使得鏡像可重用,數據也可以簡單分享

B.存儲卷的類型

1.綁定掛載卷

  • 指向主機文件系統上用戶指定的位置,在主機提供的文件或目錄需要掛載到容器的特定位置時,非常有用

  • 使用-v(—volume)選項和位置映射來創建綁定掛載點,映射以冒號分隔,映射鍵(冒號前)是主機文件系統上的一個絕對路徑,鍵值(冒號后)是容器中掛載的目標存儲位置

  • run -d --name bmweb -v ~/MyProject/docker/4:/usr/local/apache2/htdocs -p 8080:80 httpd

  • 可以添加:ro將掛載卷和存儲卷設為只讀

  • ~/MyProject/docker/4:/usr/local/apache2/htdocs:ro

  • 兩個問題:將可移植容器綁定到特定主機的文件系統;創造了與其他容器發生沖突的機會

  • 綁定掛載卷比較適合需要使用特殊掛載點的工作站或機器,在通用平臺或硬件池避免這類綁定

2.Docker管理卷:使用管理卷是一種在文件系統特定位置解耦卷的方法

C.共享存儲卷

1.—volumes-from標志,復制任何本卷所引用的源容器到新的容器中,復制卷始終具有相同的掛載點

2.有三種情況下不能使用—volumes-from:

  • 如果你構建的容器需要共享卷掛載到不同的位置,就不能使用

  • 源卷之間彼此沖突,或者有新的卷規格

  • 如果你需要更改卷的寫權限,就不能使用

D.管理卷的生命周期

1.管理卷的生命周期獨立于任何容器,但截至目前,你只能通過容器來引用它們

2.管理卷是二等實體,你沒有辦法分享或刪除特定的管理卷,因為你沒有辦法指定一個管理卷,如果你不使用綁定掛載卷,只創建了管理存儲卷的話,那么只能通過它們的容器來區分

3.區分存儲卷最好的方法是為每個管理卷定義一個容器

4.使用-v運行docker rm命令將試圖刪除目標容器中引用的任何管理卷,如果刪除每一個已引用被處理卷的容器,但沒有使用-v標志,就會產生孤立卷,移除孤立卷需要一系列手工操作

E.存儲卷的高級容器模式

1.卷容器模式:一個容器,只是提供卷的句柄,不需要運行,因為停止時容器仍能保證存儲卷的引用

2.卷容器對于數據句柄的維護非常重要,即使單個容器對數據具有一定的獨占訪問權限,這些句柄仍使其輕松地備份、恢復和遷移數據

3.當你控制并能夠使掛載點的命名慣例標準化,那么存儲卷容器將會最有用,這是因為每一個容器從卷容器復制卷并繼承了掛載點的定義,具有特定要求的鏡像應清楚地傳達其文檔中的內容或找到一種可編程的方法

4.數據打包的存儲卷容器:將容器中的數據打包以此增加其價值,它描述了鏡像是如何被用于分發靜態資源,比如在由其他鏡像構建的容器中使用的配置或代碼。數據打包的卷容器將鏡像中的靜態內容復制到其定義的存儲卷,這些容器可用于分發關鍵架構信息

5.多態工具就是以一致性的方式進行交互,但可能有幾個實現,分別做不同的事情,使用存儲卷,可以注入不同的行為到容器中,而無需修改其鏡像

五、網絡訪問

A.網絡相關背景知識

B.Docker的網絡

1.Docker關心兩種類型的網絡:單主機虛擬網絡和多主機虛擬網絡。本地虛擬網絡用來提供容器的隔離。多主機虛擬網絡構建了一個抽象的覆蓋網絡,在這個網絡中,任何容器相對于網絡上的其他容器都擁有獨立的、可路由的IP地址

2.Docker使用操作系統的底層特性構建了一個特殊的、可定制的虛擬網絡拓撲結構,每個容器各自擁有一個本地回環接口和一個分享的以太網接口,其中以太網接口連接著在主機命名空間上的另一個虛擬接口

3.四種網絡容器原型:Closed容器、Joined容器、Bridged容器、Open容器

C.Closed容器

1.運行在這種容器中的進程只能夠訪問本地回環接口,如果進程只需要和本身或者和其他本地進程通信的話,選擇這一種是非常合適的

2.在docker run命令后添加—net none作為參數來告訴Docker創建一個Closed容器

D.Bridged容器

1.擁有兩個接口,一個私有的本地回環接口,另外一個私有接口通過網橋連接到主機的其他容器

2.默認或使用—net bridge選項

3.使用—hostname選項,可以設置一個新容器的主機名;使用—dns設置DNS服務器ip;—dns-search允許你指定一個DNS查找 域,這個查找域就像host名的一個默認后綴;—add-host,能自定義從主機名到IP地址的映射關系

4.所有的自定義轉換關系都保存在容器中的/etc/hosts文件中

5.Bridged容器默認不能夠被主機網絡訪問,被主機的防火墻保護了起來,默認的網絡拓撲結構沒有提供任何從主機外部接口到容器接口的路由

6.-p或—publish選項,能夠在主機網絡棧上的端口和容器端口之間創建映射關系;使用-P或—publish-all,會告訴Docker daemon去創建作用于容器所有的端口,將容器的商品都暴露出去;—expose選項,能設置容器想要開放的端口;docker port 命令會輸出一個列表,每一行對應一個端口映射

7.默認情況下,容器對本地的其他容器是完全開放的;使用docker -d —icc=false可以選擇關閉容器之間的網絡連接

8.docker -d —big “ip”可以設置docker創建網橋接口的IP地址,也可以使用docker -d -fixed-cidr “"無類域內路由(CIDR)地址來設置子網的大小;docker -d -mtu 1200來設置設置最大傳輸單元(MTU);-b或-bridge來使用Linux自定義網橋

E.Joined容器

1.當你想要不同容器上的程序通過本地回環接口進行通信時;當一個容器中的程序將要改變Joined網絡棧,而另外一個程序將要使用那個被改變的網絡棧時;當你想要監控另外一個容器中某個程序的網絡流量時;

F.Open容器

1.—net host命令創建,對主機網絡有完全的訪問權,沒有提供任何隔離

G.跨容器依賴

1.鏈接——本地服務發現:當新容器被創建時,目標容器必須正在運行,會發生三件事:

  • 描述目標容器的環境變量會被創建

  • 鏈接的別名和對應的目標容器的IP地址會被添加到DNS覆蓋列表中

  • 如果跨容器通訊被禁止了,Docker會添加特定的防火 墻規則來允許被鏈接 的容器間的通信

2.當跨容器通信(ICC)被允許時,—expose選項為容器端口到主機端口的映射,當ICC被禁止時,—expose選項成了定義防火墻規則 和在網絡上顯式聲明容器接口的一個工具

3.—link 容器名:別名,鏈接

4.只有正確恰當的配置、強大的網絡規則設置,加上服務依賴的聲明,才能構造一個深度安全防御的系統

5.鏈接的本質就是靜態的、具有方向性和無傳遞性的依賴;鏈接通過檢測目的容器的網絡信息(IP地址和開放端口),然后將這些信息注入新容器中

六、隔離——限制危險

A.資源分配

1.內存-m或-memory,可用單位有b,k,m和g,內存限制并不是內存保留,而是防止容器使用超出具體大小的內存資源

2.cpu權重,—cup-shares=整數;cup限定指定的CPU,—cpuset-cpus;

3.設備授權,使用—device選項來指定一個設備的集合,這些設備會被掛載進新容器中,選項的值必須 是主機操作系統上的設備文件到新容器中位置的映射

B.共享內存

1.Linux的IPC命名空間分區共享內存單元,比如說命名的共享內存塊、信號量和消息隊列,默認情況下Docker為每一個容器創建了一個獨立的IPC命名空間

2.—ipc選項支持創建的新容器的IPC命名空間和另外一個目標容器是一樣的

3.—ipc host,可以和運行在主機上的進程通信,屬于開放內存容器

C.理解用戶

1.提供了-u或—user選項來設置run-as用戶,可以設置用戶和用戶組,-u nobody:default或-u 10000:20000

2.除非你想要主機的文件能夠被容器訪問,否則不要將文件以卷的形式掛載到容器上

D.能力——操作系統功能的授權

1.通過—cap-drop選項為容器去除能力,通過—cap-add選項能夠增添能力

E.運行特權容器

1.特權容器維持它們自己的文件系統和網絡隔離,但卻擁有對設備和共享內存的全部訪問權,還具備全部的系統能力

2.使用—privileged選項來開啟這種模式

F.使用加強工具創建更健壯的容器

1.Docker提供了一個在容器創建或者運行時指定Linux安全模塊(LSM)的選項,LSM是Linux采用的一個框架,用作操作系統和安全供應商之間的接口層。AppArmor和SELinux都是LSM的供應商

2.通過—security-opt選項來設置

3.通過—exec-driver=lxc來使用LXC,一旦被配置為LXC可以使用—lxc-conf來設置LXC的配置

G.因地制宜的構建容器

1.應用:確保運行應用的用戶具有有限的權限;限制 瀏覽器的系統能力;限制應用的CPU和內存資源;

七、在鏡像中打包軟件

A.從容器構建鏡像

1.從一個容器構建一個鏡像的基本工作流包含三部分:

  • 需要從一個已存在的鏡像創建一個容器

  • 修改這個容器的文件系統

  • 一旦改動完成,那么就要將這些改動提交(commit)

2.審查文件的改動:docker diff xxxx

3.docker commit命令從被修改的容器上創建新鏡像,最好使用-a為新鏡像指定作者信息,使用-m選項能夠設置關于提交的信息

4.docker run —entrypoint,指定入口點,一個入口點就是一個程序,它會在容器啟動時被執行,如果沒有設置,那么默認的命令會被直接執行,如果被設置,那么默認的命令和它的參數就會作為參數傳遞給入口點

5.當使用docker commit命令,就向鏡像提交了一個新的文件層,但不是只有文件系統快照被提交,每一層都包含描述執行上下文(execution context)的元數據

B.深入Docker鏡像和層

1.聯合文件系統由多個層組成,每當對聯合文件系統改動一次,改動會被記錄到一個新的層中,這個新層放置于所有層的最上面

2.當從聯合文件系統讀取一個文件時,系統會從存在該文件的、最上面的一層中讀取

3.大多數的聯合文件系統采用了寫時復制(copy-on-write)的技術,如果你將它理解為改動時復制(copy-on-change)會更好理解。當只讀層(read-only layer)上一個文件被修改了,那么這整個文件會在改動發生之前被復制到最上面的可寫層(writable layer),這對運行時性能和鏡像的大小會有負面影響

4.一個鏡像由多個層以棧的形式組成,首先給出一個頂層作為起始點,然后根據每層元數據中的父層ID將多個層由上而下地連接起來,從某些起始層開始,遍歷尋找它們的依賴層

5.倉庫和標簽通過docker tag、docker commit、docker build命令創建

docker commit xxx 倉庫/容器名:標簽

docker tag 倉庫/容器名:標簽 xxxxx

6.聯合文件系統實際上會在最頂層添加一個文件來標記一個文件被刪除,原始的文件和任何文件副本依舊保留在鏡像的其他層中,聯合文件系統可能有一個層數量的限制,42層限制在使用AUFS系統的計算機上很常見,可以使用docker history命令來查看一個鏡像的所有層

C.導出和導入扁平文件系統

1.socket export命令會將扁平的聯合文件系統的所有內容導出到標準輸出或者一個壓縮文件上,如果需要在容器上下文外使用鏡像中的文件系統,這是非常有幫助的

2.docker import命令會將壓縮格式的內容導入到一個新鏡像中,能夠識別多種壓縮或未壓縮的壓縮文件格式,是一個將最小文件集合導入到新鏡像的簡單方法

D.版本控制的最佳實踐

1.在Docker中,維護同一個軟件的多個版本的關鍵是設置正確的倉庫標簽,每個倉庫包含多個標簽,多個標簽能夠指向同一個鏡像,這兩點是實用標簽框架的核心

2.版本控制系統的最小單元要和實際軟件迭代的最小單元保持一致

3.latest標簽指向最新的穩定版本,而不是測試版本

4.如果軟件依賴變去了,或者軟件需要基于多個底層系統發布,那么這些依賴應該要被包含到你的標簽框架中

八、構建自動化和高級鏡像設置

A.使用Dockerfile打包Git

1.docker build -t ubuntu:auto . ,—tag或-t選項的值指定想要使用的完事倉庫設計,—file或-f能夠設置Dockerfile的名字

2.Dockerfile文件:

  • FROM ubuntu:latest,告訴Docker從最新的ubuntu鏡像創建新鏡像

  • MAINTAINER,設置鏡像維護者的名字和郵箱

  • RUN apt-get install -y git,運行命令

  • ENTRYPOINT [“git”],將鏡像的入口點設置為git

3.構建程序能夠緩存每一步的結果,當運行完幾個指令,下一條指令出現問題時,構建程序能夠在問題被修復后,從同一步重新啟動

B.Dockerfile入門

1.Dockerfile文件

  • ENV,類似于docker run 命令中的—env,設置鏡像的環境變量

  • LABEL用來定義鍵值對,被記錄為鏡像或容器的額外元數據,和—label功能一致

  • WORKDIR,與—workdir一致,生成一個默認工作目錄

  • EXPOSE指令與—expose一致,對外開放端口

  • COPY,從鏡像被創建的文件系統上復制文件到容器中,需要兩個參數,最后一個參數是目的目錄,其他則為源文件,任何被復制文件都會成為root用戶,如果任何一個參數包含了空格,必須使用exec格式

  • VOLUME,與—volume一致,參數中的每一個值都會在產生的新層中被創建為一個新的卷定義

  • CMD,與ENTRYPOINT相關,在容器中啟動一個進程

  • ADD,類似于COPY,如果指定了一個URL,會拉取遠程源文件,會將被判定為存檔文件的源中的文件提取出來

C.注入下游鏡像在構建時發生的操作

1.如果生成的鏡像被作為另一個構建的基礎鏡像,則ONBUILD指令定義了需要被執行的那些指令,跟隨在ONBUILD后的指令不會在包含它們的Dockerfile被構建時被執行,這些指令會被記錄在生成鏡像的元數據ContainerConfig.OnBuild下

D.使用啟動腳本和多進程容器

1.基于UNIX的計算機通常會先啟動一個初始化(init進程)。這個init進程負責啟動所有其他的系統服務,讓它們持續運行,然后負責關閉它們

2.主流的工具包括runit、Busybox init、Supervisord和DAEMON工具

E.加固應用鏡像

1.包含盡量少的組件 ,構建最小化的鏡像;強制基于某個特定鏡像來構建鏡像;擁有一個合適的默認用戶;去除root用戶提權的通用途徑;

2.包含有摘要組件的鏡像ID被稱為內容可尋址鏡像標識符(CAID),它引入的是一個包含特殊內容的特殊層

3.如果你構建的鏡像被設計用來運行某些特定的應用程序,那么默認配置應該盡可能地削減用戶權限,但要注意確定時間,避免用戶缺少權限導致Dockerfile中余下腳本無法執行

九、公有的私有軟件分發

A.通過托管Registry發布

1.docker login(Docker Hub網站賬號)

2.docker build -t 帳號名(Docker Hub帳號)/項目名

3.docker push 帳號名/項目名

B.私有Registry介紹

1.Docker Registry軟件(稱為Distribution),這款軟件的可用性和寬容的許可證讓運行自己的Registry的成本非常低廉,可以通過Docker Hub運行,易于在非生產環境下使用

C.鏡像的手動發布和分發

1.docker build命令來創建一個鏡像,用docker save命令或者docker export命令來創建一個鏡像文件

2.一旦有了鏡像文件,就可以使用docker load或者import命令完成傳輸

D.鏡像源代碼分發工作流程

1.僅包含一個Dockerfile和你的項目源代碼

2.使用git保存一個Dockerfile即可,與所有的Docker分發工具是脫離的,僅令依靠鏡像構建器

十、運行自定義Registry

A.運行個人Registry

1.關鍵組件:

registry的基礎鏡像是基于Debian的,已經更新了依賴關系

主程序被命名為registry,并在PATH路徑上可用

默認的配置文件為config.yml

十一、Docker Compose聲明式環境

A.Docker Compose

1.Compose是一個用于定義、啟動和管理服務的工具,其中一個服務可以定義為Docker容器的一個或多個副本,在YAML文件中定義了服務和服務系統,并通過命令行docker-compose進行管理

十二、Docker Machine和Swarm集群

1.Docker Machine可以構建一個分布式系統,創建和移除啟用了Docker的主機集群

2.Swarm集群由兩類機器組成,以管理模式運行Swarm的機器稱為manager,而運行Swarm代理的機器稱為node,為集群處理容器調度問題

感謝各位的閱讀,以上就是“Docker的相關知識點有哪些”的內容了,經過本文的學習后,相信大家對Docker的相關知識點有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尤溪县| 安陆市| 临朐县| 广灵县| 辽宁省| 科技| 易门县| 惠东县| 凤阳县| 南和县| 贞丰县| 绍兴市| 江油市| 承德市| 安阳市| 江达县| 伊金霍洛旗| 大足县| 安新县| 宁波市| 济源市| 资源县| 布尔津县| 凤翔县| 阳城县| 白城市| 廉江市| 六盘水市| 巴楚县| 禄丰县| 郓城县| 樟树市| 东山县| 微博| 毕节市| 上高县| 浦东新区| 任丘市| 玉屏| 浦县| 新闻|