Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
Docker通常用于如下场景:
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
为什么docker是云计算必然的现在和未来
IBM、谷歌(全球最大搜索引擎)、Rackspace、红帽、微软、VMware以及Amazon等巨头也纷纷在支持容器技术上加磅,与Docker展开合作;
在腾讯内部,大家所熟知的QQ空间,相册,农场等很多系统,底层都跑在Container上的,腾讯云的弹性web引擎也是基于Container构建的,搜狐云景也是基于Container构建的
由于docker的更新换代以及升级,docker已经宣布不再对redhat6的系统提供支持(不支持的原因是docker只支持更高版本的内核,所有我们可以通过升级内核的方式来安装docker)
但是我们很多生产环境中的服务器还是有很多是比较老的系统,甚至有的公司还有redhat5系统,在这个时候就涉及到一个问题,我们是直接把所有的机器升级系统还是让老的系统也支持docker,
如果直接升级所有的机器,时间成本有点高,所有我们公司绝对让docker支持比较老的系统比如centos6.5
- 注意6.5以后的版本也是支持的 比如6.8,6.9
这里是用CnetOS6.5系统
升级前系统镜像:CentOS 6.5 64位
内核版本:2.6.32-431.23.3.el6_x86_64
可以使用uname -r查看内核版本 如果是2.6.32-431.23.3.el6_x86_64 必须升级后才可以继续安装docker
1、导入public key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2、安装elrepo到内核为2.6.32的CentOS中
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm (这个仓库用不了)
3、安装kernel-lt(long term support)长期支持版本
yum --enablerepo=elrepo-kernel install kernel-lt -y (命令也会执行失败)
注:1)
如果直接通过yum方式使用elrepo源速度会较慢(该源在国外)。
推荐采用rpm的方式安装kernel-lt:
访问http://elrepo.org/linux/kernel/el6/x86_64/RPMS/下载对应的rpm包,通过rpm方式安装:
所以我们直接始终这个方法
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)关于kernel-lt的介绍可以参考elrepo官网介绍:http://elrepo.org/tiki/kernel-lt
4、编辑grub.conf文件,修改Grub引导顺序
vim /etc/grub.conf
确认安装的新内核的位置,将default的值调整为新内核的顺序,如本次升级案例中新装的内核位置为0,所以将default修改为0,保存退出,reboot重启服务器。
5、重启系统后检查内核
安装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
发现还是没有启动报错如下
[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
应该是libmapper有关,需要升级下这个库:
yum-config-manager --enable public_ol6_latest
yum install device-mapper-event-libs
启动docker
/etc/init.d/docker start
ps axu |grep docker
启动成功
因为默认是获取海外服务器 导致镜像无法下载
可以使用163的下载地址需要修改 docker.conf 的地址:
vim /etc/sysconfig/docker
添加如下内容:
other_args="--registry-mirror=http://hub-mirror.c.163.com"
OPTIONS='--registry-mirror=http://hub-mirror.c.163.com'
重启Docker服务:
[root@iZ25syqr8e5Z ~]# /etc/init.d/docker restart
Stopping docker: [ OK ]
Starting docker:
测试:docker search centos