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中倉庫和注冊服務器的關系是什么??讓我們用圖片來解釋!
????
要理解 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內核
????
2、修改grub的主配置文件/etc/grub.conf,設置default=0,表示第一個title下的內容為默認啟動的kernel(一般新安裝的內核在第一個位置),重啟系統,這時候你的內核就成功升級了。
升級完成后,那我們查看一下內核版本:
查看是否支持aufs:
對于,Centos6.5,可以使用EPEL 庫安裝docker:
下面我就可以啟動docker服務了:
以上就上用Centos安裝docker,安裝完成了,下次為大家分享Centos7和Ubuntu、windows如何安裝docker!
謝謝!
轉載于:https://blog.51cto.com/luchunning/1871493
總結
以上是生活随笔為你收集整理的centos6.5安装docker的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FreeSWITCH中文语音包
- 下一篇: 【好书试读】大数据处理之道