Docker是一個(gè)開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。開發(fā)者在筆記本上編譯測(cè)試通過的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機(jī))、bare metal、OpenStack 集群和其他的基礎(chǔ)應(yīng)用平臺(tái)。
Docker通常用于如下場(chǎng)景:
- web應(yīng)用的自動(dòng)化打包和發(fā)布;
- 自動(dòng)化測(cè)試和持續(xù)集成、發(fā)布;
- 在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺(tái)應(yīng)用;
- 從頭編譯或者擴(kuò)展現(xiàn)有的OpenShift或Cloud Foundry平臺(tái)來搭建自己的PaaS環(huán)境。
為什么docker是云計(jì)算必然的現(xiàn)在和未來
IBM、谷歌(全球最大搜索引擎)、Rackspace、紅帽、微軟、VMware以及Amazon等巨頭也紛紛在支持容器技術(shù)上加磅,與Docker展開合作;
在騰訊內(nèi)部,大家所熟知的QQ空間,相冊(cè),農(nóng)場(chǎng)等很多系統(tǒng),底層都跑在Container上的,騰訊云的彈性web引擎也是基于Container構(gòu)建的,搜狐云景也是基于Container構(gòu)建的
由于docker的更新?lián)Q代以及升級(jí),docker已經(jīng)宣布不再對(duì)redhat6的系統(tǒng)提供支持(不支持的原因是docker只支持更高版本的內(nèi)核,所有我們可以通過升級(jí)內(nèi)核的方式來安裝docker)
但是我們很多生產(chǎn)環(huán)境中的服務(wù)器還是有很多是比較老的系統(tǒng),甚至有的公司還有redhat5系統(tǒng),在這個(gè)時(shí)候就涉及到一個(gè)問題,我們是直接把所有的機(jī)器升級(jí)系統(tǒng)還是讓老的系統(tǒng)也支持docker,
如果直接升級(jí)所有的機(jī)器,時(shí)間成本有點(diǎn)高,所有我們公司絕對(duì)讓docker支持比較老的系統(tǒng)比如centos6.5
- 注意6.5以后的版本也是支持的 比如6.8,6.9
這里是用CnetOS6.5系統(tǒng)
升級(jí)前系統(tǒng)鏡像:CentOS 6.5 64位
內(nèi)核版本:2.6.32-431.23.3.el6_x86_64
可以使用uname -r查看內(nèi)核版本 如果是2.6.32-431.23.3.el6_x86_64 必須升級(jí)后才可以繼續(xù)安裝docker
1、導(dǎo)入public key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2、安裝elrepo到內(nèi)核為2.6.32的CentOS中
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm (這個(gè)倉庫用不了)
3、安裝kernel-lt(long term support)長(zhǎng)期支持版本
yum --enablerepo=elrepo-kernel install kernel-lt -y (命令也會(huì)執(zhí)行失敗)
注:1)
如果直接通過yum方式使用elrepo源速度會(huì)較慢(該源在國(guó)外)。
推薦采用rpm的方式安裝kernel-lt:
訪問http://elrepo.org/linux/kernel/el6/x86_64/RPMS/下載對(duì)應(yīng)的rpm包,通過rpm方式安裝:
所以我們直接始終這個(gè)方法
wget http://elrepo.org/linux/kernel/el6/x86_64/RPMS/kernel-lt-3.10.106-1.el6.elrepo.x86_64.rpm
rpm -ivh kernel-lt-3.10.106-1.el6.elrepo.x86_64.rpm
2)關(guān)于kernel-lt的介紹可以參考elrepo官網(wǎng)介紹:http://elrepo.org/tiki/kernel-lt
4、編輯grub.conf文件,修改Grub引導(dǎo)順序
vim /etc/grub.conf
確認(rèn)安裝的新內(nèi)核的位置,將default的值調(diào)整為新內(nèi)核的順序,如本次升級(jí)案例中新裝的內(nèi)核位置為0,所以將default修改為0,保存退出,reboot重啟服務(wù)器。

5、重啟系統(tǒng)后檢查內(nèi)核

安裝docker
[root@localhost ~]# rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Retrieving http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.JN76fI: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[root@localhost ~]# yum -y install docker-io
發(fā)現(xiàn)還是沒有啟動(dòng)報(bào)錯(cuò)如下
[root@vagrant-centos65 log]# vim /var/log/docker
\nWed Nov 1 07:58:07 UTC 2017\n
/usr/bin/docker: relocation error: /usr/bin/docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference
\nWed Nov 1 07:59:22 UTC 2017\n
time="2017-11-01T07:59:23.022022493Z" level=info msg="Listening for HTTP on unix (/var/run/docker.sock)"
/usr/bin/docker: relocation error: /usr/bin/docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference
\nWed Nov 1 08:01:05 UTC 2017\n
/usr/bin/docker: relocation error: /usr/bin/docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference
應(yīng)該是libmapper有關(guān),需要升級(jí)下這個(gè)庫:
yum-config-manager --enable public_ol6_latest
yum install device-mapper-event-libs
啟動(dòng)docker
/etc/init.d/docker start
ps axu |grep docker
啟動(dòng)成功
因?yàn)槟J(rèn)是獲取海外服務(wù)器 導(dǎo)致鏡像無法下載
可以使用163的下載地址需要修改 docker.conf 的地址:
vim /etc/sysconfig/docker
添加如下內(nèi)容:
other_args="--registry-mirror=http://hub-mirror.c.163.com"
OPTIONS='--registry-mirror=http://hub-mirror.c.163.com'
重啟Docker服務(wù):
[root@iZ25syqr8e5Z ~]# /etc/init.d/docker restart
Stopping docker: [ OK ]
Starting docker:
測(cè)試:docker search centos