Centos6.7安裝docker1.7.1

餘二五發表於2017-11-13

一、Docker簡介
    Docker 提供了一個可以執行你的應用程式的封套(envelope),或者說容器。它原本是 dotCloud 啟動的一個業餘專案,並在前些時候開源。它吸引了大量的關注和討論,導致 dotCloud 把它重新命名到 Docker Inc。它最初是用 Go 語言編寫的,它就相當於是加在 LXC(LinuX Containers,linux 容器)上的管道,允許開發者在更高層次的概念上工作。

    Docker 擴充套件了 Linux 容器(Linux Containers),或著說 LXC,通過一個高層次的 API 為程式單獨提供了一個輕量級的虛擬環境。Docker 利用了 LXC, cgroups 和 Linux 自己的核心。和傳統的虛擬機器不同的是,一個 Docker 容器並不包含一個單獨的作業系統,而是基於已有的基礎設施中作業系統提供的功能來執行的。

    Docker類似虛擬機器的概念,但是與虛擬化技術的不同點在於下面幾點:

    1.虛擬化技術依賴物理CPU和記憶體,是硬體級別的;而docker構建在作業系統上,利用作業系統的containerization技術,所以docker甚至可以在虛擬機器上執行。

    2.虛擬化系統一般都是指作業系統映象,比較複雜,稱為“系統”;而docker開源而且輕量,稱為“容器”,單個容器適合部署少量應用,比如部署一個redis、一個memcached。

    3.傳統的虛擬化技術使用快照來儲存狀態;而docker在儲存狀態上不僅更為輕便和低成本,而且引入了類似原始碼管理機制,將容器的快照歷史版本一一記錄,切換成本很低。

    4.傳統的虛擬化技術在構建系統的時候較為複雜,需要大量的人力;而docker可以通過Dockfile來構建整個容器,重啟和構建速度很快。更重要的是Dockfile可以手動編寫,這樣應用程式開發人員可以通過釋出Dockfile來指導系統環境和依賴,這樣對於持續交付十分有利。
    5.Dockerfile可以基於已經構建好的容器映象,建立新容器。Dockerfile可以通過社群分享和下載,有利於該技術的推廣。

    Docker 會像一個可移植的容器引擎那樣工作。它把應用程式及所有程式的依賴環境打包到一個虛擬容器中,這個虛擬容器可以執行在任何一種 Linux 伺服器上。這大大地提高了程式執行的靈活性和可移植性,無論需不需要許可、是在公共雲還是私密雲、是不是裸機環境等等。

    Docker也是一個雲端計算平臺,它利用Linux的LXC、AUFU、Go語言、cgroup實現了資源的獨立,可以很輕鬆的實現檔案、資源、網路等隔離,其最終的目標是實現類似PaaS平臺的應用隔離。
    Docker 由下面這些組成:
    1. Docker 伺服器守護程式(server daemon),用於管理所有的容器。
    2. Docker 命令列客戶端,用於控制伺服器守護程式。
    3. Docker 映象:查詢和瀏覽 docker 容器映象。

 docker特性

    檔案系統隔離:每個程式容器執行在完全獨立的根檔案系統裡。

    資源隔離:可以使用cgroup為每個程式容器分配不同的系統資源,例如CPU和記憶體。

    網路隔離:每個程式容器執行在自己的網路名稱空間裡,擁有自己的虛擬介面和IP地址。

    寫時複製:採用寫時複製方式建立根檔案系統,這讓部署變得極其快捷,並且節省記憶體和硬碟空間。

    日誌記錄:Docker將會收集和記錄每個程式容器的標準流(stdout/stderr/stdin),用於實時檢索或批量檢索。

    變更管理:容器檔案系統的變更可以提交到新的映像中,並可重複使用以建立更多的容器。無需使用模板或手動配置。

    互動式Shell:Docker可以分配一個虛擬終端並關聯到任何容器的標準輸入上,例如執行一個一次性互動shell。

兩個基礎概念images與container

    Container和Image 在Docker的世界裡,Image是指一個只讀的層(Layer),這裡的層是AUFS裡的概念,最直觀的方式就是看一下docker官方給出的圖:

wKiom1ngKLDheHCgAAG4jTgWReA905.jpg-wh_50

    Docker使用了一種叫AUFS的檔案系統,這種檔案系統可以讓你一層一層地疊加修改你的檔案,最底下的檔案系統是隻讀的,如果需要修改檔案,AUFS會增加一個可寫的層(Layer),這樣有很多好處,例如不同的Container可以共享底層的只讀檔案系統(同一個Kernel),使得你可以跑N多個Container而不至於你的硬碟被擠爆了!這個只讀的層就是Image!而如你所看到的,一個可寫的層就是Container。

    那Image和Container的區別是什麼?很簡單,他們的區別僅僅是一個是隻讀的層,一個是可寫的層,你可以使用docker commit 命令,將你的Container變成一個Image,也就是提交你所執行的Container的修改內容,變成一個新的只讀的Image,這非常類似於git commit命令。

二、Docker安裝

    目前,Docker官網上提供的docker是基於centos7系列安裝方法。如果我們想在低於3.x核心的作業系統(比如Centos6.7)上裝Docker最新版,勢必要升級核心。但是想要在Centos6.7上安裝可以安裝較低版本的Docker。事實上,對於核心版本要大於3.10這個要求,是從Docker1.8.2版本開始的,Docker之前的版本是可以執行在較低核心版本之上的,比如1.7.1。

安裝系統環境:

1
2
3
[root@Centos ~]# cat /etc/issue
CentOS release 6.7 (Final)
Kernel 
 on an m

1
2
[root@Centos ~]# uname -a
Linux Centos 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

由於在Centos6.7的標準yum源中已經沒有Docker的安裝包了,這時,我們需要安裝EPEL。

EPEL(Extra Packages for Enterprise Linux),企業版Linux額外包,RHEL分佈非標準包的社群類庫。安裝如下:

1
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

安裝完成yum.repos.d下會出現新的epol源:

wKioL1nfLzHCmHLSAAEhmevw0yg473.png-wh_50

通過新的epel源安裝Docker1.7.1,在1.7.1中,安裝包名稱為docker-io。

1
[root@Centos ~]# yum install docker-io

安裝完成,啟動docker服務。
wKioL1nfLmbThRaqAAFC2j1rf9Y302.png-wh_50


問題:

1、於docker搜尋映象出錯解決方法。

1
2
[root@Centos ~]# docker search mysql-server
Error response from daemon: Get https://index.docker.io/v1/search?q=mysql-server: dial tcp 34.234.103.99:443: i/o timeout

解決

修改 /etc/sysconfig/docker新增以下語句:

1
other_args="--exec-driver=lxc --selinux-enabled"


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

本文轉自 SoulMio 51CTO部落格,原文連結:http://blog.51cto.com/bovin/1971779,如需轉載請自行聯絡原作者


相關文章