在windows上用docker编译ceph

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的松鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值