遇到这么一种情况,服务器操作系统为centos6,但程序只能在cento7及以上的运行,但由于种种原因,不能重装操作系统。于是想到这么一种办法来解决:在centos6上装docker,在docker中运行centos7容器,程序在centos7上运行,试了下,可行。
由于服务器是内网,因此需要离线安装docker,折腾了很久。以下为过程记录。
1、准备工作
cat /etc/redhat-release #查看系统版本
docker_rpm为已经下载好的离线包,解压后进入。
cd docker_rpm
rpm --import RPM-GPG-KEY-EPEL-6 #导入签名,否则后续安装某些包时可能会签名失败
cd docker #进入docker文件夹
image.png
查询libcgroup,没有的话需安装:
rpm -q libcgroup
rpm -ivh libcgroup-* #若没有,安装
2、安装若干个包
进入后依次执行:
rpm -ivh lxc-libs-1.0.10-2.el6.x86_64.rpm
rpm -ivh lua-alt-getopt-0.7.0-1.el6.noarch.rpm
rpm -ivh lua-filesystem-1.4.2-1.el6.x86_64.rpm
rpm -ivh lua-lxc-1.0.10-2.el6.x86_64.rpm
rpm -ivh lxc-1.0.10-2.el6.x86_64.rpm
rpm -ivh docker-io-1.7.1-2.el6.x86_64.rpm
3、卸载及安装 device-mapper
cd device-mapper-libs
rpm -ivh device-mapper-* --force --nodeps
若提示:warning: device-mapper-1.02.117-12.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
需先导入centos6的签名:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
导入签名后再安装,若提示一些冲突:
image.png
查看已有的device-mapper,删除后再安装:
rpm -qa |grep device-mapper #查看
cd .. #先退出此目录后才能删除
yum remove device-mapper-* #删除
cd device-mapper-libs #再进入
rpm -ivh device-mapper-* --force --nodeps #安装
4、测试、运行
报错及处理
运行 docker -d 出现报错,Your kernel does not support cgroup memory limit: mountpoint for memory not found
image.png
解决方法如下:
vi /etc/fstab #打开
在结尾添加:
none /cgroup cgroup defaults 0 0
运行 mount -a 使挂载生效。
再次运行 docker -d 正常。
运行
放至后台运行:
mkidr /usr/local/docker
cd /usr/local/docker
nohup docker -d & #后台运行
tail -f nohup.out
最后,service docker restart 发现报错失败,
image.png
检查状态
/etc/init.d/cgconfig status
若是stopped,运行以下进行启动:
/etc/init.d/cgconfig restart
再次运行 servcie docker restart 正常
查看 cgconfig 服务是否开启:
chkconfig --list cgconfig
若没有则运行进行开启:
chkconfig cgconfig on
5、总结:
至此在centos6上,离线安装docker完成。
但其最高版本只能到 1.7.1,此版本有一些bug,比如docker cp命令不用能,只得用其它办法拷贝。
centos最好能用7及以上,6太老了,遇到不兼容的软件就很麻烦。
参考资料:
https://www.cnblogs.com/hdulzt/p/7834312.html
https://www.jianshu.com/p/beea3ae215e6
网友评论