使用docker启动编译好的openwrt固件
一、前因
接上篇,打包编译好openwrt后,对于有些设备(如鄙人的树莓派)不想把他刷成软路由,最优最便捷的方法就是用docker启动。
对于已有rootfs(上篇有说)文件的,可以往下看。
没有的,编译之路,其修远兮。
docker化固件步骤为:
- 准备文件 (已完成)
- 编写Dockerfile
- 构建
- 上传dockerhub(可选)
- 启动
- 搞定
二、编写Dockerfile
新建Dockerfile文件,放入以下内容,文件名不能错!!
FROM scratch
ADD ./openwrt.tar.gz /
ENTRYPOINT ["/sbin/init"]
大概意思为:空镜像scratch加入openwrt.tar.gz文件,暴露openwrt初始化命令。
三、构建
将准备好的rootfs文件命名为openwrt.tar.gz,并与Dockerfile放入同一目录。
在目录中,运行下条命令构建。
docker build -t openwrt .
运行完成用 docker images
命令就能看到多了一个叫openwrt的镜像。
四、上传dockerhub(可选)
将编译好的镜像提交到dockerhub,你下次就可以直接拉取使用,也方便给那些不想编译的伙伴(俗称白嫖党)拉取。
步骤如下:
新建dockerhub仓库
与github建仓库类似,自行研究。
登录dockerhub
docker login
输入你的账号密码
镜像打标签
docker tag openwrt xxx/xxx
后面的xxx/xxx尽量匹配你的仓库名,如: docker tag openwrt freecrazy/openwrt:22.11
提交
docker push xxx/xxx
xxx/xxx 同上
五、启动
我喜欢用docker compose启动,所以同一目录再建个docker-compose.yml文件。
内容如下:
version: '3.3'
services:
openwrt:
restart: always
container_name: openwrt
network_mode: macnet
privileged: true
image: openwrt
command: /sbin/init
具体步骤见以前文章。
启动之后需要去更改默认IP,但bash指令进不去容器,好在它有个ash指令可用,如下:
docker exec -it openwrt ash
六、总结
兜兜转转终于用上一手的镜像了,妈妈再也不用当心我拿别人的二手镜像了。
感觉就像,以前在下游的接水喝,如今,直接找着泉眼怼着喝,美滋滋,妙不可言。
可是,可是,你这丫,也太纯净(简陋)了点吧,好歹给个美艳的主题呀,dai佬。
看这空空荡荡、一马平川的主题插件列表,继续下一个其修远兮。
封禁生活第XXXXX天。