Docker移植的限制

1. linux内核的限制

一个容器镜像能运行在任何一个运行Docker的机器上。 但是,容器化的应用需要一个特定的内核版本, 那它可能不能在每台机器上都工作。 如果一台机器上运行了一个不匹配的Linux内核版本, 或者没有相同内核模块可用, 那么此应用就不能在其上运行。

2.硬件架构的问题

一个在特定硬件架构之上编译的容器化应用, 只能在有 相同硬件架构的机器上运行。 将一个x86架构编译的应用容器化后(例如在一个非Linux的系统上运行Docker,实际上Docker的客户端和守护进程不要求在一台机器上,当构建的时候,是在Docker的守护进程中构建的。), 不能在ARM架构的机器上。

拓展:

目前市面上一些软路由已经支持Docker容器,例如爱快、群辉等,这些处理器所用的架构是ARM架构,在PC的Docker无法直接运行。

如何进行迁移:

  1. 借助qemu模拟环境
wget https://github.com/multiarch/qemu-user-static/releases/download/v5.1.0-2/qemu-aarch64-static.tar.gz

docker run --rm --privileged multiarch/qemu-user-static:register
#运行ARM容器
docker run -it -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static 容器名字

##最后快照打包
  1. 利用CRIU工具进行迁移

①:Ubuntu中的服务模块从镜像仓库中下载支持跨架构和跨操作容器迁移的Docker容器镜像,然后使用该镜像启动容器。该镜像由Popcorn 编译器生成的二进制文件构建。
②:安卓设备发送容器迁移请求到边缘服务器。
③:服务模块向容器发出信号,表明它必须在最近的迁移点冻结。
④:服务模块调用CRIU模块对容器进行checkpoint,然后将容器状态转储到一系列CRIU镜像文件中。
⑤:服务模块调用CRIU转换模块,将CRIU镜像文件从X86架构转换为ARM架构。
⑥:安卓设备连接到边缘的服务模块,然后下载CRIU镜像文件。
⑦:安卓从镜像仓库中下载支持跨架构和跨操作系统容器迁移的Docker容器镜像,然后使用该镜像创建一个容器。
⑧:安卓使用CRIU镜像文件来恢复创建的容器。 恢复的容器进程将从迁移点继续运行。

	参考
	1.《Kubernetstat in Action》 Marko Luksa
	2. https://blog.csdn.net/zhaocb_Swan/article/details/108474051?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.opensearchhbase&spm=1001.2101.3001.4242.1
	3. https://blog.csdn.net/weixin_42443075/article/details/118076160
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

king config

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

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

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

打赏作者

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

抵扣说明:

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

余额充值