本帖最后由 tyxu 于 2024-3-24 17:35 编辑 本人老白,又老又白,喜欢折腾。目前半退休状态,终于有时间折腾啦,和大家分享一下我的近期折腾结果。如果大佬们觉得本文幼稚,请勿喷,不要打击老同志那颗爱折腾的心。同时,热烈欢迎大家指正交流。 本文极度适合群晖用户,适合各种已经完成docker搭建的用户。当然,如果您有设备可以运行虚拟机,或者直接安装Openwrt,本文大部分步骤可以借鉴。 根据我自己的使用情况,计划包含以下几个部分:安装immortalWrt、安装配置science小猫咪、DDNS如何在FakeIP下工作、利用*V*P*N*回家学习science文化知识。 选择openwrt的原因就不多说了,主要是比较小巧,可用的插件多,适合小规模折腾。您要是非得觉得装个ubuntu更好,也别喷我,毕竟适合自己的才是最好。 docker hub上基于openwrt的旁路由集成镜像很多,多数都是集成了各种插件的18.06版本,而且试用过程发现这些镜像动辄几百兆,很多插件还用不上,毕竟18.06有点老,有些插件更新还会出现内核兼容问题。 那么有没有办法使用新一些的openwrt版本,并且只安装自己需要的插件呢?必须有! 经过一些尝试,最后决定使用immortalWrt的 21.02.7版本搭建一个自己定制的环境,这个版本应该是上一个稳定的版本,只有大约25M。没敢用最新的23.05.x,还是感觉有点不踏实。 关于immortalWrt,是openwrt的一个分支,具体情况可以百度 好啦,开始正题: 准备工作。。。。 我使用的是群晖DS418play,型号比较老并被定义为家用系列,在DSM7.x下是无法安装docker的。 首先,无“open vswitch”选项,需要更改配置文件,共要改两个文件,,,如何修改和打开,请自行百度 ![]() 其次,DS418play 无 Docker 套件,建议去官网下载DS218+的,注意DSM版本,我用的是DSM7.1系列,毕竟都是同一CPU,其它配置也差不多,,, https://nologydownload. ... &build_number=42962 Docker-x64-20.10.3-1308_DS218plus.spk ![]() 如果您用的不是这种蹩脚的群晖,上面可以跳过。 打开“open vswitch”后,群晖会在原有两个物理网卡(eth0,eth1)的基础上,增加两个虚拟网卡(ovs_eth0,ovs_eht1),用于连接vswitch虚拟交换机。 使用ifconfig命令会发现,开启vswitch后,联机网卡已经自动切换成了ovs_eth0或ovs_eth1。 ![]() 现在,使用下载好的群晖DS218docker套件,安装吧!安装好docker后,基础准备完成。 如果您不是群晖用户,上面的全可以跳过,选择适合您设备的应用,装好docker就行啦! 为docker配置环境。。。 1、开启网卡混杂模式(混杂模式-物理网卡可以被虚拟多个MAC地址) 切换root权限,否则没有权限
2、创建虚拟vlan 其中192.168.10.0/24是我的内网地址,192.168.10.1是我的主路由器地址,ip-range 是使用的地址范围,以上根据个人实际修改。macnet是新建的macvlan名,可以随意取,后面会用到。
3、准备镜像 Openwrt的镜像选择还是比较多的,在Docker hub以此为关键字可以检索出很多,根据自己需要选用就可以,有实力的同学还可以制作自己的镜像。 但上面说过,这些自带插件的镜像个头都比较大,OP版本基本基于18.06有点老,插件更新也经常有问题(内核不兼容) 如果您执意选择这些大佬们精心定制的版本,我推荐: piaoyizy/openwrt-x86,一个兄弟根据Lean大神制作的镜像,功能上根据旁路网关用途做了简化,只包括了“师夷长技以制夷” plus,“师夷长技以制夷”和Clash三个关键插件,以及一些基础插件。至少2023年底还在更新。 sulinggg/openwrt:x86_64,这个很著名啦,但最后版本应该是几年前编译的,已经停更。 我最后还是选择了immortalWrt21.02.7 自己定制。在docker注册表搜索“immortalwrt/rootfs”,选择“x86-64-openwrt-21.02.7”并拖取镜像。里面镜像很多,如果您的设备不是x86,可以选择您合适的架构下载。 ![]() 如果你的群晖无法访问注册表,可以尝试用 docker pull 命令试试,但成功机会依然不大。 我最初也没办法访问注册表。为了解决这个问题,用了个笨办法。在台式机上也安装了docker for win,毕竟台式机出门就方便多了。用台式机的docker获取镜像,然后使用shell执行: 注意!是windows的那个DOS界面,提示符长这个样子的! PS C:\Users\Administrator>
4、创建并运行容器 回到ssh,登入群晖,提升权限
运行命令创建容器
-d 参数是让容器在后台运行。 --restart always 为了避免容器意外挂掉,或者被误杀,设置了意外退出自动重启。 --name 给容器定义个名字,可以自由定义。 --privileged 获取宿主机root权限(或特殊权限)。 --network macnet 指定网络为macnet,就是我们上面创建的那个vlan。 --ip=192.168.10.19 指定默认地址。 immortalwrt/rootfs:x86-64-openwrt-21.02.7 镜像的名称。 /sbin/init 表示载入容器后内核启动时主动呼叫的第一个进程,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上自己kill自己。 最后回车运行一下吧! ![]() 这样的结果,就是容器已经成功创建。可以
![]() 5、更改容器网络参数 使用SSH工具,进入容器,2e5b就是我们上面创建的容器ID缩写
我是编辑成了这个样子,可以参考:
|
|