自己编译了 op 固件,是推送到阿里云 docker 镜像仓库上,目前在线升级脚本是借助 docker pull 下载包含固件的 docker 镜像后 cp 固件和 sha256sums 出来,然后执行在线升级逻辑。 在线升级造成的一些限制就是初次 rootfs 很小(升级的时候会扩容),而 docker 占据很大容量:
root@OpenWrt:~# du -shx /*
...
203.0M /overlay
403.5M /rom
...
root@OpenWrt:/overlay/upper/usr/bin# du -shx *
36.8M containerd
6.8M containerd-shim
8.8M containerd-shim-runc-v1
8.8M containerd-shim-runc-v2
16.2M containerd-stress
18.7M ctr
15.3M dnet
30.6M docker
60.0K docker-init
1.6M docker-proxy
45.0M dockerd
24.0K tini
调整了 ROOTFSZISE 暂时是规避这个问题,但是这个不是优雅的解决,可能维护的其他设备的配置无法跑起 docker 。 所以有没有啥符合我需求的制品库,我可以构建后把固件推送上去,然后我固件里带的升级脚本 curl 或者 wget 不需要验证就能下载到,之前的 ghproxy 都不稳定。
1
Buges 2022-06-05 15:48:49 +08:00 via Android
docker 镜像仓库可以不用 docker pull ,而是直接下载,都是 tar.gz 包而已。
homebrew 就是用这种方式分发预编译 artifacts 的。 |
2
guanzhangzhang OP 可能部分人没看懂需求。不是我个人用,是很多人用我的固件,要求任何使用我固件的升级脚本不带认证信息 curl 或者 wget 下载到固件,和 docker 没有任何关系。。。
|
3
guanzhangzhang OP @Buges 我知道 docker 镜像是走 http ,但是那个层貌似需要解密还是转换来着,你有相关资料吗
|
4
Buges 2022-06-05 16:30:38 +08:00 via Android
@guanzhangzhang 每一层都是一个 tar 打包的 rootfs ,正常情况下 docker 会一层层的释放再用 overlay 叠加起来。
相关格式还有一个清单,里面有一些元信息,具体可以去看 OCI 的标准。 没啥需要转换的,如果你都打包到一层里面直接下下来解压就好了。 |
5
imzcg2 2022-06-05 22:46:05 +08:00
国内 git 仓库用 raw
|
6
Kinnice 2022-06-06 10:22:41 +08:00 via Android
直接放到对象存储里面不就可以了,oss 之类的
放三个文件 固件,sha256sum ,latest.txt (放最新版本的固件名称,或者一些公告什么信息) |
7
guanzhangzhang OP @Kinnice oss 会被人恶意刷的,我昨天找了个 ghproxy ,后面试试
|