运维记之源码编译docker19.03.5

What:git下载docker仓库,源码编译19.03.5版本
Who:数字基建工人-Yison
Why:甲方给钱
When:2022年某月某日
Where:aarch64;openEuler20.03;4核4G
How:如下

  1. 神说要有git、go、docker-ce,编译docker-ce之前要先安装docker-ce,这是个鸡生蛋,蛋生鸡的玩意啊!版本如下图
yum install git go docker-ce -y

在这里插入图片描述

  1. 从github上克隆docker-ce.git,此处经过漫长的等待!
git clone https://github.com/docker/docker-ce.git
  1. 在docker-ce.git中切换到docker的19.03.9版本
mv docker-ce docker-ce.git && cd docker-ce.git && git checkout v19.03.5-beta2
  1. 执行如下命令,开始编译,并打RPM包,报错误:Unable to find image ‘alpine:latest’ locally,此处一万匹草泥马掠过,如下图
make rpm

在这里插入图片描述
处理流程:
1 由图中信息可知Entering directory '/root/docker-ce.git/components/packaging/rpm,目前现场在这个目录;
2 由图中信息可知,-v /root/docker-ce.git/components/packaging/rpm/rpmbuild/SOURCES这个目录找不到alpine镜像
3 修改/etc/docker/daemon.json文件(没有就创一个),修改docker源为网易的,内容如下
{
“debug”:true,
“storage-driver”:“overlay2”,
“storage-opts”:[“overlay2.override_kernel_check=true”],
“registry-mirrors”:[“http://hub-mirror.c.163.com”]
}
然后执行如下命令,重启docker生效
# systemctl restart docker
4 执行如下命令,拉取alpine的docker镜像,然后再编译,这个魔法就成功了!
# docker pull alpine:latest

  1. 然后又中了另一个魔法,如下图
    在这里插入图片描述
    解除魔法的参考链接:https://stackoverflow.com/questions/66188688/error-internal-load-metadata-for-docker-io-library-python-alpine3-8latest
    说是buildkit的毛病,结果我又突然发现Makefile中与链接相似的东东,把DOCKER_BUILDKIT=1改成0就OK了!
    在这里插入图片描述
  2. 又又又中了毒魔法,意思是网易的docker源也不是什么都有的搞,如下图
    在这里插入图片描述
    我试了源码里的所有发行版本centos-7 、centos-8 、fedora-30 、fedora-31、 fedora-32、rhel-7,幸好feodra-30给了我一丝慰藉,可以通过docker pull拉取,但是需要修改docker-ce.git/components/packaging/rpm下的Makefile,使得只打包fedora-30的rpm包,如下图
    在这里插入图片描述
    毒魔法再次解除,可以继续编译了!如下图
    在这里插入图片描述
  3. 又双叕中了毒魔法,如下图
    在这里插入图片描述
    然鹅,又由图信息可知,
    1 最终锁定到源码components/engine/hack/dockerfile/install,那只能再次前往案发现场了~,如下图;
    在这里插入图片描述
    2 克隆tini.git时,是执行了hack/dockerfile/install/install.sh tini;为了验证一下,我还执行了install.sh vndr,没错;
    处理流程:找度娘,搜OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104错误,参考链接如下:https://www.cnblogs.com/zhanqing/p/giterror.html
    tini.installer中克隆使用的协议https改为ssh,即git,如下图
    在这里插入图片描述
  4. 又一个毒魔法,如下图
    在这里插入图片描述
    处理流程:修改源码中components/packaging/rpm/SPECS/docker-ce.spec文件,取消安装不存在的distribution_based_engine.json文件,如下图
    在这里插入图片描述
  5. 再次出现如下图问题,之前clone 时,也出现Empty reply from server,重新make rpm编译就行,要么是clone次数太多,它烦了~,要么网络问题。
    在这里插入图片描述
    接着我手贱的make clean了,结果libnetwork.git 都无法git clone了,不clean重复make rpm了5次,都出现git clone的问题,卧槽哇,诸葛亮都没它们难请,GG!

我麻木地一直make rpm,功夫不负有心人,终于打包成功,如下图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值