
Why
为什么要在windows上跑docker去编译ceph的代码?是松鼠哥吃太饱了吗?当然不是~
在实际生产问题处理中,很多时候会遇到棘手的情况,需要快速修改并编译得到可用的二进制程序,例如上篇中,松鼠哥处理多个osd连续的down时,就需要导出其中的一些pg,但是pg的数据导出会因为其中的一些对象有问题导致后续对象无法导出,这就要对导出的工具ceph-objectstore-tool做代码修改并重新编译,我们不应该在需要的时候才去搭建编译环境、修改和编译,提前准备环境就很有必要了。
那为什么不用vm来编译呢?恰好vmware workstation pro还免费了。主要的原因是:
- vm对于windows来说太重了,编译机怎么也要8GiB内存,4个core,为了编一下代码,整个os跑真的太重了。
- 依赖太蛋疼,不能够在一个vm中同时编译12、13、14、15、16等版本的ceph代码,莫非要每个版本一个vm?
而docker则能很好地解决上述问题:
- docker不重,你甚至可以在秒级得到一个可以立刻编译的环境。
- docker可以构筑编译镜像,这就意味着可以每个版本建立自己的镜像,镜像并不是很大。
- 可以导入导出镜像实现迁移和备份,想在哪里编译就在哪里编译。
windows下的docker
em…windows是可以跑docker的,但是对windows系统的小版本有要求,例如松鼠哥一开始用的windows10 1909,安装的时候会提示这个小版本不支持,需要升级才行:
Installation failed:one pre-requisite is not full filled
升级也简单,就是在系统更新那里点一下更新它就自己升级了,时间还挺久,现在松鼠哥的版本是:
C:\Users\twj>ver
Microsoft Windows [版本 10.0.19045.4651]
顺便提一下,现在docker的网站访问不行了,要从docker网站下载windows的安装包会失败,得上科技。
How
首先是下载windows版的docker,在科技的加持下直接去docker官网下载就行,松鼠哥用的v4.32.0版本,然后检查系统的小版本是不是符合要求,最简单的做法就是直接安装,看它给不给安装。
安装完成后,开始准备镜像。
首先,ceph12、13、14版本的代码可以在centos7下编译,所以首先要制作centos7的基础镜像,具体就是安装centos7.6.1810的minimal版本,啥包也不要装,就是要个基础系统,然后打包一下:
cd /
tar -cvpf system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .
其实就是除了那几个系统自动生成的目录,其他目录都使用tar打包,打包好之后,弄出来,导入docker中作为基础镜像
docker import ./system.tar centos7.6.1810:1.0
为了编译15、16、17等版本的ceph,也要搞一个debian的基础系统,这里推荐使用debian 10.13.0 netins,也就是debian

最低0.47元/天 解锁文章
1971

被折叠的 条评论
为什么被折叠?



