91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Docker系列1:Docker與容器基礎知識介紹

發布時間:2020-06-12 14:25:40 來源:網絡 閱讀:268 作者:zxhk 欄目:云計算

1.什么是容器

docker必須要要說容器,所以我們需要首先來說一下容器的概念。

  • 其實容器就是一工具,泛指可以容納其他的物品工具,可以用來存儲、運輸物品;物品可以放在容器中的,而容器可以保護物品。

常見的容器:

  • 瓶子

  • 籃子

  • 集裝箱

  • 柜子

2.虛擬化技術

說容器,就必須對比容器和虛擬化技術,首先就說虛擬化技術。

我們實現虛擬化技術主要有兩種

方式1:主機虛擬化

這里所虛擬化的是整個硬件平臺,比如vmwarevirtual box,他們所虛擬出來的是一個完整的裸機,我們可以再這個裸機上隨意的安裝os和軟件。

主機虛擬化是分為兩類的

l?type-I(類型1的虛擬化)

l?type-ii(類型2的虛擬化)

程序運行在虛擬機中,肯定比運行在物理機中性能差,那么為什么還要將其運行在虛擬機中?

  • 復用:比如需要運行兩個tomcat,讓其工作在虛擬機中,就可以實現8080套接字不沖突了

  • 隔離:一個進程在虛擬機中做任何操作,對于其他虛擬機中的進程和物理機中的進程都是沒有影響的

那么我們怎么即實現隔離,又不影響性能呢?

  • 一個主機在運行起來之后,分為內核空間和用戶空間,在用戶空間中就是運行用戶空間進程。

  • 默認所有的用戶進程都是在同一個用戶空間的,那么此時我們要想隔離多個進程的運行環境,就可以創建多個用戶空間,而且多個用戶空間是互相隔離的

  • 這里一個一個性對獨立的用戶空間就是我們所謂的linux 容器

使用容器,目的是為了創建一個隔離的環境,在這個隔離環境環境中,應該至少包括隔離如下幾個層面

  • UTS:主機名和域名

  • Mount:工作目錄,也稱之為安裝樹

  • IPCipc是必須要進行隔離的,如果不隔離IPC,那么多個進程就可以互相通信,那么就不存在隔離了

  • PID:隔離PID也是必須的

  • user 和group:在容器中也要有獨立的用戶,比如都要有root ,但是這個root肯定不能都是真正的root,因為如果是真root用戶的話,就有權限刪除其他容器中的內容了。

  • network:隔離網絡是最為重要的,因為一個容器作為一個獨立的單元工作,那么就需要為每個容器準備一個網卡、接口、tcp/IP協議棧。

這里有個概念就是namespaces(名稱空間)

  • linux的內核原生就支持了6種名稱空間,在構建容器的時候,就是從這6個名稱空間中抽取出來一部分構成一個容器。

各種名稱空間與所支持的內核版本

Docker系列1:Docker與容器基礎知識介紹

  • 從這里可以看到,如果想更好的使用容器技術,centos6就不適合了。

3.LXC

所謂的LXC,其實就是linux Container,這是一種基于模板的方式實現容器技術應用的解決方案 ,在LXC中包含了一組工具

  • lxc-create:快速創建容器的命令

4.什么是Docker

  • 其實docker就是lxc的二次封裝發行版,他是用lxc作為容器引擎,同時使用鏡像技術,將一個操作類型容器所需要的文件提取安裝好,并打成一個包

  • 當創建容器的時候,只需要將這個包復制N份并啟動容器,這樣就好了,速度很快。

  • 當用docker創建容器的時候,其實就是用lxc create來創建一個容器。

  • docker極大的降低了容器的使用難度

用來存放鏡像的服務器,我們稱之為docker倉庫,在這個倉庫中有我們幾乎能想到的全部的容器

  • docker使用了一種更為精巧的設計,那就是每個容器中僅僅運行一個進程。

  • 比如在一個容器中僅僅運行nginx,如果要用apache,就需要下載另一個容器了,此時的nginxapache就可會通過容器間的通信邏輯進行通信。

  • 這里讓每個進程運行在一個獨立的容器中,而且我們也知道容器是一個隔離的環境,那么這樣一來,一個進程出現了問題,對于其他的進程是不會受到影響的。

?

使用docker另個一好處:真正的實現的一次編寫,到處運行了

  • 現在我們的生成環境中,都是多版本并行的,如同時用著centos5 6 7,同時還用著windowsubuntu等系統,如果這個時候要開發一個程序在所有的平臺都能運行,這個時候往往是需要有好幾個團隊分別開發面向不同系統的版本。

  • 而有了docker以后,就只需要開發一個版本,并將這個軟件做到一個docker鏡像中,這樣只需要將這個鏡像放到任意的平臺上,只要這個平臺有docker,那么就可以運行這個鏡像,同時這個程序也就可以開始運行了,所以,軟件開發的難度大大降低了。

?

再來說docker鏡像的構建方式

  • docker鏡像的構建方式是很特殊的,稱之為:分層構建、聯合掛載

以構建nginx鏡像為例解釋一下

  • 先做一個最底層、純凈的系統,比如最小化的centos6系統

  • 在這個centos系統的基礎上安裝一個nginx就構成了鏡像

注意,構建的鏡像只包含nginx本身,而不包含centos操作系統內容

  • 這個鏡像就包含了兩層,這兩層共同構成了運行在了linux上的centos

  • 當啟動容器的時候,需要將這兩層都掛載上去就可以用了,這就是分層構建、聯合掛載,

  • 如果需要啟動多個鏡像,其中有nginxtomcatapache等,如都是基于centos的,所以在下載的時候,只需要下載一個centos,再分別下載需要層就可以了。

為何能實現多個上層應用公用底層系統?

  • 是因為底層的centostomcat都是只讀的。

  • 當用戶在所創建的容器中執行寫操作的時候,底層是只讀無法修改

  • 所以,這個時候就會底層的資源復制一份上來,然后在復制的這層中進行修改,這種機制稱之為:寫時復制

關于容器編排工具

  • 比如我們有100個主機可以運行docker,當需要啟動容器的時候,只需要編排工具發送指令,這個編排工具根據算法從后端的這幾種找一個來啟動docker

  • 再比如,我們要運行amp的環境,這里三個程序就是三個容器,這三個容器的啟動順序是有關系的,所以就需要設置啟動的順序,這樣編排工具還需要可以根據順序依次啟動。

編排有很多:

  • 第一個:docker自己的編排工具:這里其實是三個工具的組合,machine+swarm+compose

  • 第二個:ASF的,meos+marathon

  • 第三個:google的,kubbernets,簡稱k8s,這是因為ks間有8個字母

5.對比kvm虛擬化

  • kvm:基于硬件虛擬化技術,是需要cpu支持的,是虛擬出來一個虛擬機,虛擬機管理器是需要占用額外的系統資源的,也就是即使不跑任何虛擬機,都需要占用6%左右的系統資源

  • docker:基于內核虛擬化技術,沒有虛擬任何東西,但是是通過隔離技術實現的,所以不會對系統帶來額外的開銷。

Docker系列1:Docker與容器基礎知識介紹

6.對比openstack虛擬化

Docker系列1:Docker與容器基礎知識介紹

  • 真正的docker是不應該當做虛擬機用的(雖然可以)

7.docker架構

Docker系列1:Docker與容器基礎知識介紹

整個架構分為了三個部分

l?1:客戶端:cient

l?2:服務器端:docker_hosts

l?3:倉庫端:registery

l?各個部分之間通信是基于http或者https進行通信的

docker_host部分

????服務器端就是靠運行docker daemon來運行在守護進程模式的下的,此時的docker就會監聽在一個套接字之上了,而且docker是支持三種套接字的

l?ipv4套接字

l?ipv6套接字

l?unix socket套接字:也就是監聽在一個本地文件上。

docker倉庫

  • 首先docker的registery中提供了docker鏡像的存儲功能,而且還提供了用戶登錄下載鏡像時候的認證功能。

  • 另外dockerregistery中,還包括repository,一個repository就是一個目錄,在一個目錄中只存儲一個應該程序的鏡像,比如要創建的nginx的鏡像,那么就創建一個目錄,這個目錄名就是nginx所有的nginx的鏡像都是放在同一個目錄下。

  • 因為現在有多個鏡像,那么如果想唯一的標識一個鏡像,就需要借助于 tag(標簽),比如第一個1.9 1.11 1.23,這樣通過repo名稱和標簽名的組合,就可以唯一的標識一個鏡像。

Docker系列1:Docker與容器基礎知識介紹

  • docker官方提供有docker倉庫,但是其實也有第三方提供的,而且也可以自己做docker倉庫。

5.docker的應用場景

1.簡化配置

  • 工作中的環境有生產環境、測試環境、開發環境測試環境又分為功能測試、性能測試;生產環境又分為預生產環境和生成環境。

  • 這么多的環境,環境不同,配置也就不同,如果配置不同,那么就可能會導致上線失敗,使用docker就可以簡化配置,做一個鏡像,使用這個鏡像就可以完成部署上線。

2.代碼流水線管理

  • 開發人員在開發完成以后,將代碼傳遞到服務器上,然后測試人員可以從服務器上拉去代碼進行測試,測試完成以后,開始進行發布,首先就是進行灰度發布,然后才是正事發布。

3.開發效率

  • 新員工入職后配置各種環境,這個過程就往往是比較麻煩的,那么這里,我們就可以用docker做個容器輕松來實現。

4.應用隔離

  • 各個應用之間互相是隔離的。

5.服務器整合

  • 也就是說一個服務器可以跑多個容器實例

6.調試能力

  • 處理bug的能力

7.多租戶

8.快速部署

  • docker是秒級的,啟動速度極其快。

  • 比如之前說過,春晚的微信搶紅包,用的是docker,說是可以1秒啟動1000docker程序。

大中型公司選擇docker的理由

l?技術儲備

l?跟上節奏,提升自身技術

l?符和當前業務需求

? ??(目前普遍都是第二個,根本都不是第一個和第三個)


向AI問一下細節

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

AI

营口市| 屏边| 大渡口区| 咸阳市| 五家渠市| 博野县| 且末县| 武功县| 梧州市| 武义县| 温泉县| 曲靖市| 新营市| 北海市| 基隆市| 瑞金市| 兴安县| 大关县| 沙田区| 平陆县| 安吉县| 成都市| 镇远县| 浪卡子县| 关岭| 宜良县| 湘乡市| 芦溪县| 洞口县| 德化县| 新建县| 浮山县| 板桥市| 会理县| 龙门县| 南靖县| 奎屯市| 文昌市| 通榆县| 兴仁县| 隆化县|