Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
CentOS Docker 安裝,Docker支持以下的CentOS版本:
- CentOS 7 (64-bit)
- CentOS 6.5 (64-bit) 或更高的版本
目前,CentOS 僅發行版本中的內核支持 Docker。
- Docker 運行在 CentOS 7 上,要求系統爲64位、系統內核版本爲 3.10 以上。
- Docker 運行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統爲64位、系統內核版本爲2.6.32-431 或者更高版本。
在此分享一下本人學習Docker的經歷。
操作環境:CentOS 6.5 x86_64
經過多次嘗試,在CentOS 6.5 的這個最低的內核版本(2.6.32-431)上直接安裝docker都失敗,具體原因估計還是版本太低不兼容吧(官方建議內核版本在3.8.0及以上),所以在安裝Docker之前升級一下系統的內核版本是必須的。
-
升級系統內核版本
網上很多介紹CentOS 6.5升級內核都是下載源碼編譯安裝,感覺麻煩,對Linux不熟悉的話容易出錯。我這裏選擇從yum的ELRepo源中安裝。
在yum的ELRepo源中,有mainline、long-term這2個內核版本,考慮到long-term更穩定,會長期更新,所以選擇這個版本。1). 導入public key:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
;
導入過程中可能會報錯:
解決:運行命令yum update nss
2). 安裝ELRepo到CentOS-6.5中:
rpm -ivh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
;
3). 安裝kernel-lt(lt=long-term):
yum --enablerepo=elrepo-kernel install kernel-lt -y
,
或者安裝kernel-ml(ml=mainline):
yum --enablerepo=elrepo-kernel install kernel-ml -y
;
4). 編輯grub.conf文件,修改Grub引導順序:
vim /etc/grub.conf
,
確認剛安裝好的內核在哪個位置,然後設置default值(從0開始),一般新安裝的內核在第一個位置,所以設置default=0;
5).重啓後查看系統內核版本。
至此,CentOS 6.5的系統內核版本已經從原來的2.6.32-431.el6.x86_64升級到3.10.107-1.el6.elrepo.x86_64,可以配置Docker了。
-
安裝 Docker,直接運行:
yum install docker-io
,會出錯,原因:No package docker-io available.
注意:CentOS 6.5與7.0的安裝是有一點點不同的,CentOS-6上docker的安裝包叫docker-io,並且來源於Fedora epel庫,這個倉庫維護了大量的沒有包含在發行版中的軟件,所以先要安裝EPEL,而CentOS-7的docker直接包含在官方鏡像源的Extras倉庫(CentOS-Base.repo下的[extras]節enable=1啓用)。1).安裝yum 源:
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
;
2).安裝epel-release-6-8.noarch.rpm以後直接
yum install docker-io
就可以正常安裝了;
3).運行Docker:
service docker start
,並設置爲開機啓動:chkconfig docker on
;
將Docker安裝到CentOS上後,你需要將自己添加到docker羣組,那樣才能以非root用戶的身份來運行Docker。爲此,運行命令:
usermod -a -G docker $USER
。
問題:啓動Docker過程中會報錯:docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference
解決:運行命令:yum -y upgrade device-mapper-libs
。
有可能是升級內核前沒有更新系統導致,對此沒有深究。
附:
① yum -y update
,升級所有包,改變軟件設置和系統設置,系統版本升級,內核版本不變;
② yum -y upgrade
,升級所有包,不改變軟件設置和系統設置,系統版本升級,內核不改變。