docker源码编译(containerd+runc源码编译)

2023-05-16

目录

    • 源码下载
      • docker cli
    • docker engine
    • bugs
      • go get timeout
      • debian超时
      • git clone TLS
    • containerd源码编译
    • runc源码编译
    • docker+containerd+runc
    • 后期bug
      • frontend grpc server closed unexpectedly
      • Dependency failed for docker application container engine

源码下载

自从docker-ce 20.10开始,docker官方公司维护的docker-ce的仓库就已经弃用了。

原本docker-ce的仓库地址为:https://github.com/docker/docker-ce

随机docker被拆分为两部分,一部分是cli,用来处理client的部分,也就是解析命令,另一部分是docker engine部分,也就是daemon部分。这两部分对应的仓库分别位于docker cli和docker engine。

下载后分别处理docker cli和docker engine。

docker cli

首先一定要切换分支,否则旧的版本会无法识别新的指令。

cd cli
git chekout 20.10
sudo su
make -f docker.Makefile binary

这一部分的输出如图所示:
在这里插入图片描述
切换分支后整个过程不会碰到任何bug。

命令执行完成,就能在 ./build/ 目录下找到 docker 二进制文件,然后执行使用该文件执行 ./docker version 就可以看到正常情况下docker的输出。

docker engine

首先同样要注意切换分支!!!

cd moby
git chekout 20.10
sudo su
make binary

这部分会因为服务器不在中国的原因出现一系列的问题

bugs

go get timeout

首先会出现go get timeout的问题,这部分在网络上能搜索到很多相同的解决方案,需要注意的是添加的命令不能直接在自己的终端中加入,需要在shell本身的文件中加入,

比如我这里显示go get github上面的一个网站出问题,用grep -r -i查到了这个网站所在的shell文件,在这里插入图片描述
然后将网络上搜到的命令放到这个shell文件中,在这里插入图片描述

然后这个问题就解决了,就到了下一个问题。

debian超时

因为需要安装debian系统,所以首先需要换源,在Dockerfile.simple这个文件中,修改如下

# 修改前
ARG APT_MIRROR=deb.debian.org

# 修改后
ARG APT_MIRROR=ftp.cn.debian.org

然后debian系统安装完成,会通过apt下载很多包,需要更改apt包的源。

Dockfile文件中:

#国内debian源

ADD sources.list /etc/apt/

sources.list在dockerfile同目录下:

deb http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib

这样就可以解决了。

git clone TLS

这里需要多次尝试,即使使用了命令也需要多次执行,多试几次就成功了。

终端,这里不再是shell文件中,执行命令

git config --global http.https://github.com.proxy http://127.0.0.1:2340
git config --global https.https://github.com.proxy https://127.0.0.1:2340

我这里是用了代理,对应的端口是2340。

然后就成功了!!!!

就可以在 bundles/binary-daemon 目录下就能找到 dockerd这个可执行文件

接着我们需要执行 systemctl stop docker 和 systemctl stop docker.socket 停止原来的 docker 服务。

然后运行./dockerd就可以执行了!!!在这里插入图片描述

containerd源码编译

源码网站:https://github.com/containerd/containerd
下载源码后,进入containerd,直接执行下面的命令即可:

make(这里无需使用sudo权限)
sudo make install

编译过程中不会遇到什么错误,可能会遇到go版本的问题,升级一下即可。
想要使用自己编译后的contaienrd,需要关闭系统自带的containerd服务

sudo systemctl stop containerd
sudo containerd(这里就是使用自己编译出来的二进制文件)

runc源码编译

和containerd编译过程差不多,也是下载源码后make + sudo make install命令,同样不会遇到什么错误。请添加图片描述
可以看到生成的runc位于 /usr/local/sbin/runc文件夹处,然后默认就用自己编译后runc了。如果想要使用系统自带的runc,直接删除该文件夹然后重启docker即可。

docker+containerd+runc

想要整个过程都使用自己编译的,首先需要编译runc,然后在containerd文件夹下面打开sudo containerd,观看输出变成如下,然后进入docker,打开dockerd可执行程序即可。然后sudo docker即采用的是自己编译的。请添加图片描述

后期bug

frontend grpc server closed unexpectedly

这个问题是因为runc变成了自己由源码编译的runc程序,这个时候直接删除上面的文件夹即可

Dependency failed for docker application container engine

这个是因为containerd没有打开,所有docker服务无法成功start

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker源码编译(containerd+runc源码编译) 的相关文章

随机推荐

  • 移动开发者大会次日观感

    作者 xff1a 朱金灿 来源 xff1a http blog csdn net clever101 继续是2011移动开发者大会的观感 第二天是进行的主题论坛 xff0c 分别有下面一些主题 xff1a 开放平台与技术 产品与设计 移动游
  • cefsharp之devtools开发者工具API应用-Emulation

    这里仅介绍关键方法 xff0c 快捷键根据自己爱好定义 1 一键设置禁用 启用Javascript 核心代码 参数true禁用 xff0c false启用 xff0c sel webbrowser为你的浏览器 await sel webbr
  • CefSharp.WinForms-109.1.110升级

    包升级地址 NuGet Gallery CefSharp WinForms 109 1 110 NuGet Gallery CefSharp Common 109 1 110 NuGet Gallery cef redist x64 109
  • ESP32S2(12K)-DS18B20数码管显示温度

    一 物料清单 NODEMCU 32 S2 ESP32 12K 四段数码管 共阴 DS18B20 VCC DQ GND Arduino IDE 2 0 3 二 实现方法及效果图 2 1 引用库 include lt OneWire h gt
  • cefsharp-物联网浏览器-升级至110.0.250

    基于cefsharp二次开发的物联网浏览器升级最新版 110 0 250 暂不支持H264功能 一款属于自己的浏览器 支持H264的最新版本100 0 230 更多功能了解 关注我
  • 德赛西威NAV75*-SV731*导航升级(凯立德J30)实战

    一 前言 xff1a 升级导航德赛西威 xff08 2015年买的 xff09 地图几年没升级过了 xff08 之前自己折腾了一个 xff09 之前的启动是DSA2013 xff08 电子G已经无法升级数据文件了 xff0c 本次只升级地图
  • 网络串口调试助手(串口透传网络调试)

    一 前言 xff1a 1 本地串口调试同步到网络 xff08 可以远程实时查看发送 串口打印数据 xff09 2 远程直接发送串口调试指令透传到串口设备 3 通讯协议MQTT 43 WebSocket 串口 二 效果展示 网络客户端 xff
  • log4net(winform)使用方法

    前言 xff1a log4net是 Net下一个非常优秀的开源日志记录组件 log4net记录日志的功能非常强大 它可以将日志分不同的等级 xff0c 以不同的格式 xff0c 输出到不同的媒介 第一步 xff1a 引入组件 xff1a 引
  • cefsharp111.2.20(winform)版本体验

    第一步 xff1a 更新步骤 xff1a 先下载再本地更新会快一点 https globalcdn nuget org packages cefsharp winforms 111 2 20 nupkg https globalcdn nu
  • CefSharp.WinForms 112.2.70最新版体验

    一 准备 下载最新包及依赖包 对应 NET4 5 2 后续版本可能4 6 2 到packages中 本地升级更快 NuGet Gallery CefSharp WinForms 112 2 70 NuGet Gallery CefSharp
  • VUE3(.NET6)管理后台

    基于Admin NET框架 xff0c 预览下效果 内置功能 主控面板 xff1a 控制台页面 xff0c 可进行工作台 xff0c 分析页 xff0c 统计等功能的展示 用户管理 xff1a 对企业用户和系统管理员用户的维护 xff0c
  • 2011年养成的一个工作习惯

    作者 xff1a 朱金灿 来源 xff1a http blog csdn net clever101 有一句名言 xff0c 没有记录的公司 xff0c 迟早要垮掉的 xff0c 多么尖锐 个人也不是如此吗 xff1f 在下半年 xff0c
  • Cefsharp.WinForms-v112.3.0 带您最新版体验(小更新)

    一 准备 下载最新包及依赖包 对应 NET4 5 2 后续版本可能4 6 2 到packages中 本地升级更快 NuGet Gallery CefSharp WinForms 112 3 0 NuGet Gallery CefSharp
  • 无人机飞行控制算法、控制律设计软件与半物理仿真

    工业级多功能可编程飞行控制系统专业的图形化控制律设计软件灵活强大的工程应用开发平台DSP处理器及高精度传感器自定义高速遥测数据采集嵌入式半物理仿真系统丰富的用户设备接口适用于固定翼 旋翼机 特殊飞行器 车船艇 机器人 云台等 概 述 xff
  • 程序调试记录

    最近把师兄的程序在万兆网络上进行测试 xff0c 现在把调试中出现的问题进行记录 xff1a 1 xff09 其中一共是十六块板子 xff0c 板子的配置文件是sipixel xml xff0c 每块板子的配置信息里都有对应的IP xff0
  • 华清远见嵌入式学习day27——编译工具和环境搭建

    0 系统移植四天课程安排 1 编译工具 xff0c 环境搭建 2 bootloader 3 kernel 4 文件系统 1 嵌入式系统的应用领域 1 军事 2 医疗 3 移动设备 4 家电 5 工控 2 什么是嵌入式系统 一般的定义 xff
  • tf.Variable函数的用法

    tf Variable xff08 initializer xff0c name xff09 xff1a initializer是初始化参数 xff0c 可以有tf random normal xff0c tf constant xff0c
  • Docker入门操作+文件备份

    文件备份操作 bin sh it is a shell script which provides function of auto backup ecology logfiles regularly by 494389 date 61 9
  • Qnap Docker(Container Station)更改国内镜像源

    0x01qpkg环境 通常qnap市场中下载的qpkg应用 xff0c 其环境变量就在自己的包环境中 所以要修改系统中的配置 xff0c 通常需要修改qpkg应用中对应的配置 即 share CACHEDEV1 DATA qpkg xxx
  • docker源码编译(containerd+runc源码编译)

    目录 源码下载docker cli docker enginebugsgo get timeoutdebian超时git clone TLS containerd源码编译runc源码编译docker 43 containerd 43 run