一.介绍

Centos6对于Docker的官方支持理论上来说只能算是勉强能用,因为只提供了基于1.7.1版本的docker-io,还得先装EPEL源,然而1.7.1版本很多功能都有缺失,至少到1.9才能算够用。

所以怎么办呢?按照以往的思路来说,官方源版本不够的程序当然是选择自己编译咯,但是!这个并不能行得通,至少不能直接行得通,为什么?因为Docker的编译需要在Docker中进行(是的,要先装Docker才能编译Docker,没毛病),然而在运行的参数中有个ARG,这个至少在1.9版本的Docker上才支持,所以……你在1.7.1的Docker的环境下编译只会收到"docker Step 1 : ARG Unknown instruction: ARG"的报错,然后就GG了。

二.解决方案

那么,怎么办呢?当然是想办法过渡一下,我在网上翻了不少东西,终于发现了一篇文章——>传送门

作者给了Docker官方的一个1.9.1版本的二进制文件下载地址,这个在Centos6上是能用的,作者表示他是直接用的,然后会发生无法修改配置的情况(因为真的只有一个文件,啥启动文件啊,配置文件啊,全都没有),但是捏,我想了个办法来移花接木。那就是先装1.7.1的,然后直接用1.9.1的文件替换1.7.1的,这样用了1.7.1的配置和各种启动文件,而程序本身确实1.9.1的

(有个前提条件,请确保你的内核版本高一点,我建议是直接上4.9的内核,配合BBR美滋滋,然后文件系统用OverlayFS也是很棒棒,详情查看——>传送门  我博客另外一篇为Docker定制内核的就别看了,那个太麻烦了,而且也是因为1.7.1没法用OverlayFS所以才选了AUFS)

好像有点绕?不用纠结,看命令

这样就OK了,看下版本,一切正常

其实吧,到这部已经可以正常使用了,但是,生命在于折腾。如果我们要更新的版本,怎么办呢?

来啊,搞事啊,编译走起,首先得满足下编译环境

然后就可以真正开始了,make build这部会调用到docker (1.9版本),所以请务必保证docker开启

然后会在bundles目录下生成你版本号的目录,里面有binary-client和binary-daemon目录,前者是docker文件以及它的md5和sha256文件,后者是一堆程序以及它们的md5和sha256(全被我删了)

然后你看着办吧,找个地方丢着然后直接运行dockerd启动daemon然后使用docker来交互就行,原有的/etc/init.d/docker文件你需要删掉了,因为无法兼容新版本的启动方式

当然我也没有实际测试过这样有啥问题_(:з」∠)_,仅供测试。


Senraの小窝原创文章,转载请注明来自:Centos6安装新版本Docker——套路大法