centos6.5安裝docker

                      centos6.5 安裝docker


防僞碼:吃的苦中苦,方爲人上人!


前言:在當今的主流社會中,docker和openstatick是一大主流方向,下面爲大家講解理論知識和實際操作現實中的docker!

理論知識:

    相信大家都知道docker是什麼?那在這裏就不多說了!

    Docker 基於 Go 語言開發,代碼託管在Github上,並遵循Apache 2.0 開源協議。

docker的專業叫法是應用容器(Application Container)。



    爲什麼要使用docker?

    1 、快速交付應用程序

     2 、更容易部署和擴展

     3 、效率更高

     4 、快速部署也意味着更簡單的管理

    Docker 的常用案例包括:

           1.  自動打包和部署應用

    2.創建輕量、私有的 PaaS 環境

    3.自動化測試和持續集成/部署

    4.部署並擴展 Web 應用、數據庫和後端服務器

在docker中倉庫和註冊服務器的關係是什麼??讓我們用圖片來解釋!

    wKioL1gkFGLhZTJ3AAB7i326gk8796.png-wh_50

要理解 Docker 內部構建,需要理解以下三種部件:

Docker 鏡像 - Docker p_w_picpaths

Docker 倉庫 - Docker registeries

Docker 容器 - Docker containers

Docker 鏡像 


Docker 鏡像是 Docker 容器運行時的只讀模板,鏡像可以用來創建 Docker 容器。每一個鏡像由一系列的層 (layers) 組成。Docker 使用UnionFS(聯合文件系統)來將這些層聯合到單獨的鏡像中。UnionFS允許獨立文件系統中的文件和文件夾(稱之爲分支)被透明覆蓋,形成一個單獨連貫的文件系統。正因爲有了這些層的存在,Docker 是如此的輕量。當你改變了一個 Docker 鏡像,比如升級到某個程序到新的版本,一個新的層會被創建。因此,不用替換整個原先的鏡像或者重新建立(在使用虛擬機的時候你可能會這麼做),只是一個新的層被添加或升級了。現在你不用重新發布整個鏡像,只需要升級,層使得分發 Docker 鏡像變得簡單和快速。每個docker都有很多層次構成,docker使用  union file systems  將這些不同的層結合到一個p_w_picpath 中去。

Docker 倉庫 

Docker 倉庫用來保存鏡像,可以理解爲代碼控制中的代碼倉庫。同樣的,Docker 倉庫也有公有和私有的概念。公有的 Docker 倉庫名字是 Docker Hub。Docker Hub 提供了龐大的鏡像集合供使用。這些鏡像可以是自己創建,或者在別人的鏡像基礎上創建。

倉庫是集中存放鏡像文件的場所。有時候會把倉庫和倉庫註冊服務器(Registry)混爲一談,並不嚴格區分。實際上,倉庫註冊服務器上往往存放着多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標籤(tag)。



倉庫分爲公開倉庫(Public)和私有倉庫(Private)兩種形式。

最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。國內的公開倉庫包括 Docker Pool等,可以提供大陸用戶更穩定快速的訪問。

 當然,用戶也可以在本地網絡內創建一個私有倉庫。

當用戶創建了自己的鏡像之後就可以使用push命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上pull下來就可以了。

*注:Docker 倉庫的概念跟Git類似,註冊服務器可以理解爲 GitHub 這樣的託管服務。

Docker 容器 

Docker 利用容器來運行應用,一個Docker容器包含了所有的某個應用運行所需要的環境。每一個 Docker 容器都是從 Docker 鏡像創建的。Docker 容器可以運行、開始、停止、移動和刪除。每一個 Docker 容器都是獨立和安全的應用平臺。

容器是從鏡像創建的運行實例。它可以被啓動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。

可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。

*注:鏡像是隻讀的,容器在啓動的時候創建一層可寫層作爲最上層。


Docker從0.9版本開始使用libcontainer替代lxc,libcontainer和linux系統的交互。


Docker  底層技術

docker底層的 2 個核心技術分別是 Namespaces 和 Control groups

Namespaces用來隔離各個容器

1)pid namespace

不同用戶的進程就是通過pid namespace 隔離開的,且不同  namespace  中可以有相同pid。所有的LXC進程在docker中的父進程爲docker進程,每個lxc進程具有不同的 namespace 。

 

2) pid namespace

有了pid namespace,  每個 namespace 中的pid能夠相互隔離,但是網絡端口還是共享 host 的端口。網絡隔離是通過 net namespace 實現的,每個 net namespace 有獨立的  network devices, IP addresses, IP routing tables, /proc/net  目錄。這樣每個 container 的網絡就能隔離開來。docker默認採用veth的方式將 container 中的虛擬網卡同 host 上的一個docker bridge: docker0 連接在一起。

 

3) ipc namespace

container 中進程交互還是採用linux常見的進程間交互方法 (interprocess communication - IPC),包括常見的信號量、消息隊列和共享內存。container  的進程間交互實際上還是host 上具有相同pid namespace 中的進程間交互。

 

4) mnt namespace

類似chroot,將一個進程放到一個特定的目錄執行。mnt namespace 允許不同 namespace 的進程看到的文件結構不同,這樣每個  namespace  中的進程所看到的文件目錄就被隔離開了。在container裏頭,看到的文件系統,就是一個完整的linux系統,有/etc、/lib 等,通過chroot實現。

 

5) uts namespace

UTS("UNIX Time-sharing System") namespace 允許每個 container 擁有獨立的 hostname 和 domain name,  使其在網絡上可以被視作一個獨立的節點而非 Host 上的一個進程。

 

6) user namespace

每個 container 可以有不同的  user  和  group id,  也就是說可以在 container 內部用 container 內部的用戶執行程序而非 Host 上的用戶。

 

有了以上 6 種 namespace 從進程、網絡、IPC、文件系統、UTS和用戶角度的隔離,一個 container 就可以對外展現出一個獨立計算機的能力,並且不同 container 從 OS 層面實現了隔離。然而不同 namespace 之間資源還是相互競爭的,仍然需要類似ulimit來管理每個 container 所能使用的資源 - -cgroup。

cgroups(Control groups)實現了對資源的配額和度量。

理論知識介紹到這裏了,下面我們來操作如何在centos6.5上安裝Docker


docker官網:https://docs.docker.com

centos系列安裝Docker,Docker支持Centos6及以後的版本。

在RedHat/Centos環境下安裝Docker,要求linux kernel至少3.8以上,且64位的系統中,由於RedHat和Centos的內核爲2.6,因此我們需要先升級內核。


升級內核(記住一定要升級,要不然會出現很多莫名奇怪的問題,建議用yum安裝)


1、yum安裝帶aufs模塊的3.10內核

    

wKiom1gkGsGiT_ffAAAp440vlAQ268.png-wh_50

wKioL1gkGsKADjNVAABh8q5EcNg132.png-wh_50


wKioL1gkGzOA-9bcAABGwfB58jQ615.png-wh_50

2、修改grub的主配置文件/etc/grub.conf,設置default=0,表示第一個title下的內容爲默認啓動的kernel(一般新安裝的內核在第一個位置),重啓系統,這時候你的內核就成功升級了。

wKiom1gkHYuQDBogAAEOsGIZLOI531.png-wh_50

wKioL1gkHYywbGXrAAEPgUqGi-Y955.png-wh_50

wKiom1gkHYyTdQjyAAAIpLaeO5Q788.png-wh_50

wKioL1gkHYyzkp5NAAAPJIZ56As356.png-wh_50

wKiom1gkHY2CFP4eAABmUdeRF9U487.png-wh_50

升級完成後,那我們查看一下內核版本:

wKiom1gkIPHT0HeUAAAYKpBj6VQ392.png-wh_50

查看是否支持aufs:

wKioL1gkIReCYF_mAAAafyXV5ss767.png-wh_50

對於,Centos6.5,可以使用EPEL 庫安裝docker:

wKioL1gkIW2wHH7xAAAY9wK-DFc939.png-wh_50

wKiom1gkIW6xu8OtAACzSPqoqQE589.png-wh_50

wKioL1gkIW_Rd90wAABFlobBS9k208.png-wh_50

下面我就可以啓動docker服務了:

wKioL1gkIj3j8FlsAAAtYWMQdFY761.png-wh_50

以上就上用Centos安裝docker,安裝完成了,下次爲大家分享Centos7和Ubuntu、windows如何安裝docker!

謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章