linux容器技術
① linux裡面rancber和docker區別是什麼
Linux是一套免費使用和自由傳播的類UNIX操作系統,一般用於後端服務中,而Docker是一個開源的應用容器引擎,兩者是用來進行配合使用,並不是一類,所以兩者無法進行對比。
Docker六大特點
1、更高效的利用系統資源
docker對系統資源的利用率更高,無論是應用執行速度,內存損耗或者文件存儲速度,都要比傳統虛擬機技術更高效。因此,相比虛擬機技術,一個相同配置的主機往往可以運行更多數量的應用。
2、更快速的啟動時間
傳統的虛擬機技術啟動應用服務往往需要數分鍾,而docker容器應用,由於直接運行於宿主內核,無需啟動完整的操作系統,因此可以做到秒級,甚至毫秒級的啟動時間,大大的節約了開發測試,部署的時間。
3、一致的運行環境
開發過程中常見的一個問題是環境一致問題,由於開發環境,測試環境,生產環境不一致,導致有些bug並未在開發過程中發現。而docker的鏡像提供了除內核外完整的運行時環境,確保環境一致性,從而不會在出現「這段代碼在我機器上沒問題」這類問題。
4、持續支付和部署
對開發和運維人員來說,最希望就是一次創建和部署,可以在任意的地方運行。(定製應用鏡像來實現集成、持續支付、部署。開發人員可以通過dockerfile來進行鏡像構建,並結合持續集成系統進行集成測試,而運維人員則可以直接在生產環境中快速部署該鏡像,甚至結合持續部署系統進行自動部署)。而且使用dockerfile使鏡像構建透明化,不僅僅開發團隊可以理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。
5、更輕松的遷移
由於docker確保了執行環境的一致性,使得應用的遷移更加的容易。docker可以在很多平台上運行,無論是物理機、虛擬機、公有雲、私有雲、甚至是筆記本、其運行結果是一致的。因此用戶可以很輕易的將在一個平台上運行的應用,遷移到另一個平台上,而不用擔心運行環境的變化導致應用無法正常運行的情況。
6、更輕松的維護和拓展
docker使用的分層存儲以及鏡像的技術,使得應用重復部分的復用更為容易,也使得應用的維護更新更加簡單,基於基礎鏡像進一步擴展鏡像也變得十分簡單。此外,docker團隊同各個開源項目團隊一起維護了一大批高質量的官網鏡像,既可以直接在生產環境使用,又可以作為基礎進一步定製,大大的降低了應用服務的鏡像製作成本。
② k8是什麼
是Kubernetes的簡稱。
Kubernetes這個詞的來源,是一個希臘詞,意為舵手或飛行員。縮寫K8s是通過用數字8替換「ubernete」的八個字母得到的。
Kubernetes是一個可移植的,可擴展的開源平台,用於管理容器化的工作負載和服務,可促進聲明式配置和自動化。它擁有一個龐大且快速增長的生態系統(growing ecosystem)。Kubernetes的服務,支持和工具被廣泛使用。
Kubernetes消除了部署和擴展容器化應用程序涉及的許多手動過程。例如,開發人員可以將運行Linux容器的主機組集群在一起,而Kubernetes可以幫助您輕松高效地管理這些集群。這些集群可以跨越公共雲,私有雲或混合雲中的主機。因此,Kubernetes是託管需要快速擴展的雲原生應用程序的理想平台,比如通過Apache Kafka進行實時數據流傳輸。
Kubernetes最初是由Google的工程師開發和設計的。谷歌(Google)是Linux容器技術的早期貢獻者之一,並公開談論了如何將谷歌所有的服務在容器中運行(這是Google的雲服務背後的技術)。
Google每周產生超過20億個容器部署,所有部署均由內部平台Borg提供支持。Borg是Kubernetes的前身,多年來開發Borg的經驗教訓成為大多數Kubernetes技術背後的支持。
③ 如何在Ubuntu上藉助Docker管理Linux容器
雖說標準的硬體虛擬化技術(比如KVM、Xen或Hyper-V)擅長於在一個物理主機上運行多個操作系統的完全隔離的實例,但這種虛擬化技術在性能、資源和資源配置時間等方面存在各種各樣的開銷。標準的機器虛擬化實際上可能沒有必要,這取決於你的實際使用場合。
另外一種輕型虛擬化方法就是所謂的Linux容器(LXC),它提供了操作系統級別的虛擬化。由於不存在運行虛擬機帶來的開銷,LXC讓用戶可以在輕型容器沙盒裡面運行標准Linux操作系統的多個實例。如果你搭建一個可復制的開發/測試環境,或者在安全沙盒裡面部署應用程序,容器就派得上大用場。
Docker就是為了便於部署Linux容器而開發的這樣一款開源工具。Docker正迅速成為容器技術方面的一項事實上的標准,已經被諸如Ubuntu和紅帽之類的各大Linux發行版所採用。
我在本教程中將演示如何在Ubuntu 14.04上,藉助Docker管理Linux容器。請注意:對Ubuntu的早期版本而言,操作步驟可能略有不同。
眼下,Ubuntu上可用的Docker程序包只支持64位系統。想在32位機器上運行它,你就要利用源代碼構建32位版本的Docker(詳見這里)。
安裝Docker
藉助apt-get命令,安裝Docker是件輕而易舉的事。
$ sudo apt-get install docker.io
為了允許非根用戶也可以運行Docker,將你自己添加到docker群組。下面這個命令會允許當前用戶運行Docker,無需根用戶許可權。
$ sudo usermod -a -G docker $USER
退出,然後重新登錄,以激活群組成員的變化。
下一步,編輯Docker配置文件,以便更新Docker二進制代碼的位置。
$ sudo vi /etc/default/docker.io
DOCKER="/usr/bin/docker.io"
重啟Docker服務。
$ sudo service docker.io restart
管理Docker容器
如果你想啟動Ubuntu操作系統的一個新的Docker容器,首先需要獲取Ubuntu Docker映像文件。下面這個命令會通過網路下載Docker映像文件。
$ docker pull ubuntu
你可以以一種交互模式來開啟Ubuntu Docker,如下所示。最後一個參數「/bin/bash」是一旦啟動就將在容器裡面執行的命令,這里是一個簡單的bash外殼命令。
$ docker run -i -t ubuntu /bin/bash
上述命令會立即啟動一個Ubuntu容器(這正是容器的魅力所在!),並為你提供容器裡面的外殼提示符。這時候,你應該能夠訪問沙盒環境裡面的標準的Ubuntu操作系統了。
想退出Docker容器,在容器裡面的提示符處鍵入「exit」。
你可以啟動不同形式的容器。比如,想啟動Fedora容器,請執行下面這個命令:
$ docker.io run -i -t fedora /bin/bash
如果本地沒有Fedora Docker映像文件,該命令就會首先自動下載映像文件,然後啟動Docker。
如果你想啟動採用某個發行版版本的容器,也可以這么做。比如說,想啟動Ubuntu 13.04 Docker,請執行下面這個命令:
$ docker.io run -i -t ubuntu:13.04 /bin/bash
容器網路
Docker使用Linux網橋將容器彼此互聯起來,並將它們連接到外部網路。安裝了Docker後,你應該會看到默認情況下自動組建的docker0 Linux網橋。你創建的每個容器都將連接到docker0網橋介面。
自定義Linux網橋
如果你想,也可以使用自定義Linux網橋將諸容器互聯起來。為此,你可以建立一個自定義網橋,並對它進行配置,如下所示。你可以為該網橋分配一個單獨的子網,並且從子網為Docker分配IP地址。我會使用10.0.0.0/24作為Docker子網。
$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0
$ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0
想讓Docker使用自定義網橋,將「-b=br0」添加到/etc/default/docker.io中的DOCKER_OPTS變數,然後重啟Docker服務。
$ sudo service docker.io restart
至此,任何新的容器都會連接到br0,其IP地址會自動從10.0.0.0/24來分配。
其他定製
還有另外幾種方法可以定製Docker的默認網路設置,主要是通過改動/etc/default/docker.io中的DOCKER_OPTS變數來實現。
「-dns 8.8.8.8 -dns 8.8.4.4」:指定容器使用的DNS伺服器。
「-icc=false」:讓諸容器彼此隔離開來。
故障排查
1. 運行docker.io命令時,你會遇到下面這個錯誤。
dial unix /var/run/docker.sock: no such file or directory(沒有此類文件或目錄)
出現這個錯誤,可能是由於Docker守護程序沒在運行。檢查Docker守護程序的狀態,確保先啟動它。
$ sudo service docker.io status
$ sudo service docker.io start
④ linux裡面的docker到底是什麼
一個利用LXC建立起來的一個容器,用於封裝作業程序,運行庫和其他相關的文件,以便可以方便地部署或者開發(不需要再次配置運行環境)。
大部分情況下這些container可以像游戲機的卡帶/DVD一樣插入系統,直接運行 :)
同時這個軟體的開發者也叫同樣的名字 Docker。
⑤ 如何在 Windows 上運行 Linux 容器
首先,我們來做一下准備工作,計算機的大概配置內存8GB和64
位的計算機,可以運行 Windows 10 或 Windows Server。已經加入了 Windows
預覽體驗計劃(Insider),這樣才能運行帶有 Hyper-V 支持的 Linux 容器。2017 年 10 月發布的Windows 10
Fall Creator update,這個版本可以讓你無需 Windows 預覽體驗身份即可使用帶有 Hyper-V 支持的 Docker
技術。大幅度保護你的隱私。從網上下載Docker安裝XZ 工具,解壓 Ubuntu 宿主容器鏡像時需要它。
加入了Windows 預覽體驗計劃(Insider),可以跳過這步。沒有加入就需要注冊該計劃,使用你在 Windows 10 中的微軟個人賬戶登錄,並在預覽體驗計劃首頁點擊「注冊」,接受條款並完成注冊。
打開 Windows 開始菜單中的「更新和安全」菜單,並在菜單左側選擇「Windows 預覽體驗計劃」。根據你個人的需要在 Windows 提示「你的 Windows 預覽體驗計劃賬戶需要關注」時,點擊「修復」按鈕。
在Windows
預覽體驗計劃的面板點擊「開始使用「,顯示時使用你要關聯的賬戶進行登錄時說明你的微軟賬戶沒有關聯到你的 Windows 10
系統,如果需要Windows 預覽體驗計劃中收到何種內容。要得到 Docker 技術所需要的 Hyper-V
隔離功能,你需要加入「快圈」,兩次確認後,重啟 Windows。重啟後,慢慢等待更新完成。
接下來是安裝 Docker for Windows,從網上下載 Docker for Windows。可以去Docker Store下載軟體。
下載完成後,安裝,並在需要時重啟,重啟後,Docker 就已經啟動了。Docker 要求啟用 Hyper-V 功能,因此它會提示你啟用並重啟。點擊「OK」來為 Docker 啟用它並重啟系統。
從 Canonical 合作夥伴鏡像網站下載用於 Windows 的最新的 Ubuntu 容器鏡像。下載後,使用 XZ 工具解壓,解壓之後就可以用了,大家就可以開始技術研發等工作了。
⑥ k8s和docker區別是什麼
k8s和docker區別有以下幾點:
1、k8s是一種開放源碼的容器集群管理系統,能夠實現自動化部署、擴展容器集群、維護等功能。
2、Docker是一種開放源碼的應用容器引擎,開發者可以將他們的應用和依賴打包在一個可移植的容器中,發布到流行的Linux機器上,也可以實現虛擬化。
3、k8s的全稱kubernetes。它是一個完整的分布式系統支撐平台,集群管理功能齊全。Kubernetes同時提供完善的管理工具,涵蓋了開發、部署、測試、運行監控等各個環節。
4、Docker是一種開放源碼的應用容器引擎,允許開發人員將其應用和依賴包打包成可移植的鏡像,然後發布到任何流行的Linux或Windows機器上,也能實現虛擬化。該容器完全使用沙箱機制,彼此之間沒有任何介面。
⑦ 為什麼說 Linux 容器將顛覆虛擬化
Mark Shuttleworth在十幾年前發起了Ubuntu inux項目,現在他在Canonical(一家提供Ubuntu支持服務的公司)主管戰略和用戶體驗。他認為新一輪的伺服器虛擬化浪潮與前一輪不太相同。
在他的指導下,Canonical和其他的Linux機構一樣,在其發布版本中先是Xen Hypervisor,接著是KVM然後繼續支持Docker,成功地趕上了虛擬化的幾輪潮流。當Eucalyptus是用的可計算雲控制器時該公司成為排頭兵,而當業界開始支持另一個開源項目- OpenStack而且OpenStack做為Linux的首選被部署到多個公有雲上時,他們也迅速地轉向OpenStack。Docker及其軟體容器方式完全類似於虛擬化並且讓雲計算服務商為之癲狂,但是讓Shuttleworth興奮的是另一種稱為Linux容器 (縮寫為LXC)的技術及與之相應的稱為LXD的Hypervisor。LXD是由Canonical開發的一個後台進程來管理這些容器並且提供了或多或少與開源的Xen及KVM、微軟的Hyper-V或者VMware的ESXi這些伺服器虛擬化Hypervisor類似的功能。
Shuttlworth向The Next Platform表示:「我們相信這是十年來對Linux虛擬化最大的突破,你可以看到我們對此是多麼興奮」。
LXC容器的想法和初期的工作都是由Google完成的,容器化應用程序已經在其基礎架構上運行了超過十年時間,而且據說每天會啟動超過20億的容器。Canonical和其他大約80個組織已經開始致力於LXC的商業化,因為LXC最初並不是一個對用戶很友好的技術。商業化是為了讓其具有常見伺服器虛擬化的觀感和體驗,盡管它使用的是非常不同且簡化的技術。
「對於容器,很多人並不了解的是我們用來配置容器的系統其實可以用很多種方法來做虛擬或者模擬」,Shuttleworth解釋說」有時你希望模仿看起和Docker類似的東西,而有時你又想模擬其他的東西。就LXC而言,我們想要創建容器的途徑是創建假想的主機,而不是運行操作系統的主機或者構成一個操作系統的所有進程。這與Docker所作的完全不同,雖然它們都使用相同的底層原語,但是創建了不同的的東西。LXC的宗旨是不藉助硬體虛擬化來創建虛擬機「
說起Docker,它在早期是基於LXC的但是現在它有了自己的抽象層,它更像一個運行在文件系統之上的單個進程,就好比你啟動了主機但並沒有運行 Init和所有構成操作系統的進程而是直接運行資料庫或者其他的東西,然後在一台主機上啟動多個容器並把它們一起置於其中。通過LXC及其LXD守護進程,Canonical希望保持擁有一個完整Debian、CentOS、Ubuntu或其他Linux操作系統的感觀。
「在LXC 1.0中,常見的情景是程序員說:「給我創建這個容器」。現在我們做法接收代碼然後將其納入LXD守護進程來管理,因此並不需要由程序員去創建每一個容器,我可以擁有上百個虛擬機並且與LXD守護進程進行通信來進行統一管理,因此我所擁有的虛擬機集群與你使用VMware ESXi hypervisor所構建的類似。把LXC打包到一個守護進程中就使得它變成了一個hypervisor。什麼是ESXi?它基本上是一個操作系統,你可以通過網路跟它通信並且讓它給你創建一個虛擬機。通過LXD,你可以跟一個運行LXC的主機說給我創建一個運行CentOS的新容器。這成為一個集群的導引機制。」
LXD也提供了另一個重要功能:它是運行的在兩台不同物理主機上的一個軟體,從而使得LXC實例能夠在主機間在線地遷移。
程序員都追求簡潔而且他們喜歡保持事物有序和整潔。在某種程度上,只是因為硬體虛擬化的成本很高就不得不把程序部署到多個主機上已經成了一個痛點。現在,你可以快速地在一台主機上運行多個程序而沒有這些開銷並且始終保持他們的原始狀態和隔離。
本周,Canonical發布了首次包括LXD hypervisor的LXC 2.0 beta版本。在本月將要發布的Ubuntu Server 15.10的更新中就包括這兩個組件,而Canonical也通過統一步驟把LXC 2.0反推入Ubuntu Server 14.04 LTS(LTS是Long Term Support的縮寫)的伺服器版本。LTS版本每兩年發布一次而且具有五年的支持生命期。由於它的穩定性有保證,所以70%的客戶都在生產環境中運行 Ubuntu伺服器的LTS版本。據Shuttleworth說,包含LXD hypervisor的LXC 2.0生產級別版本將在明年亮相,根據命名方案的建議可能就在二月或者三月最遲到4月就與新的企業級版本 – Ubuntu Server 16.04 LTS一同發布。負責Ubuntu產品和戰略的Dustin Kirklan對TheNext Platform說,從下一個LTS版本開始,在每一個Ubuntu Server中就會預設安裝LXC和LXD組件,這樣每個主機都可以運行幾十到幾百個容器 –IBM在最大的使用POWER處理器的伺服器上甚至可以運行數千個容器。
相比於依靠硬體虛擬化的常規虛擬機,LXC容器具有兩個巨大的優勢:一台主機上可以打包的容器數量和這些容器的啟動速度。盡管為了在一台硬體上用不同的容器運行不同的Linux需要一些額外的工作,但是由於LXC其實就是用Linux運行Linux,所以不需要虛擬什麼。
「這在性能方面前進了一步,而在密度方面的改進則是巨大的」,Shuttleworth無不得意地說:「而這對於低延遲、實時型的應用程序具有顯著的改善。在雲計算環境中這類事情都變得容易處理了,當然過去他們可不是這樣。如果你的雲平台運行了LXC,很快高性能計算可以搞定了、雲計算平台上的實時計算也可以搞定了,而且如果你是一個需要低傳輸延遲的電信運營商的話,那麼NFV(網路功能虛擬化)也可以搞定了。在這些需要巨大資金投入的領域,人們真的希望使用雲計算和虛擬化,而LXC使其成為可能。這是非常令人振奮的」
Shuttleworth說LXC容器在密度方面可以達到諸如EXSi、Xen或KVM這類使用虛擬機的hypervisor的14倍,而且 LXC和LXD組合在開銷方面卻只佔基於硬體虛擬化的Hypervisor的20%不到。對於空閑的負載而言,VM和LXC容器就和大多數VM和物理主機所作的一樣大部分時間在等待。對於繁忙的VM而言,LXC容器則能夠提供明顯要好得多的I/O吞吐量和更低的延遲。因此,對於空閑的主機你專注於整合,而對於繁忙的主機你專注於吞吐量和延遲。而且由於Hypervisor和VM的特定開銷可以釋放出來用於實際工作,所以你可以得到大約20%的性能提升。
現在已經開始對LXC及LXD組合進行基準測試。在上周東京召開的OpenStack峰會上,Canonical LXD開發團隊的Tycho Andersen展示了一些在虛擬化環境中的測試基準,其中一個是使用Hadoop TeraSort測試而另一個是對Cassandra NoSQL數據存儲的壓力測試。這兩個測試中,主機運行的是在峰會期間發布的最新OpenStack 「Liberty」雲控制器和同樣剛發布的Ubuntu 15.10. 15.10,它既有KVM也有LXD hypervisor和各自的虛擬機和容器。這些伺服器配備了24核和48GB內存,一個控制器負責管理OpenStack而其他三台用作基本的計算節點。
在TeraSort測試開始的時候,在三台主機上LXC和KVM的表現基本一致,但是當OpenStack/Hadoop集群中的主機數量隨著數據集的規模增長後,兩種不同的虛擬化手段在性能方面的差異開始顯現。