当前位置:首页 > 原创教程 > RouterOS使用Docker运行AdGuardHome

RouterOS使用Docker运行AdGuardHome

原创教程 / 星之宇 / 2022-11-24 14:25 / 浏览:12112 / 评论:3

容器Container是MikroTik RouterOS对Linux Docker的实现,允许用户在RouterOS中运行Docker。Container是在 RouterOS v7.4beta4中开始支持的(其实之前RC版本也支持过)。可以说RouterOS V7版本开始用Container替代了原来的KVM比较合适,目前RouterOS V7不支持KVM了。


一、环境准备

1、RouterOS V7.6

2、AdGuard Home Docker镜像


二、RouterOS Container Package安装

1、把container-7.6的包上传到ROS的Files,重启安装

185-1.png


三、RouerOS Device-Mode设置

ROS新增了Device-mode,默认情况下是限制container使用。Device-mode是一种对设备功能限制属性,即限制对特定功能配置的访问。有两种模式: enterprise和home(企业模式和家庭模式),所有设备默认都使用enterprise。目前Winbox无法管理,只能使用命令。


如果直接使用container会报错,报错提示”Couldn't add Container - not allowed by device-mode (6)“

185-2.png


1、查看当前Device-Mode

[admin@MikroTik] > /system/device-mode/ print

185-4.png


2、当在enterprise模式下,启用container模式

[admin@MikroTik] > /system/device-mode/ update container=yes

185-3.png


3、重启设备(这步要非常注意)

说明:需要在5分钟内,拔插电源重启设备(远程重启无效)或者按设备的reset按钮确认执行container模式,设备会重启生效进入container模式。如果在规定的时间内没有关机或按下reset按钮,则取消模式切换。如果同时运行另一个更新命令,则两个更新命令都将被取消。

目前这部最好的操作就是看到这个提示,什么也不要操作,拔电源重启(虚拟机直接在外部关机重启)即可


四、网络设置

情况1:如果当前有Briage,可以进行以下操作。设置container网卡的ip和网关(根据需求设置),然后在把veth1加入到当前bridge1。

[admin@MikroTik] > /interface/veth/add name=veth1 address=172.16.0.2/24 gateway=172.16.0.1
[admin@MikroTik] > /interface/bridge/port add bridge=bridge1 interface=veth1


情况2:如果当前没有Briage,那么就需要创建Briage,并设置局域网IP

[admin@MikroTik] > /interface/bridge/add name=docker
[admin@MikroTik] > /ip/address/add address=172.16.0.1/24 interface=docker

然后设置container网卡ip和网关,再加入到bridge

[admin@MikroTik] > /interface/veth/add name=veth1 address=172.16.0.2/24 gateway=172.16.0.1
[admin@MikroTik] > /interface/bridge/port add bridge=docker interface=veth1

最后设置NAT以及端口转发

[admin@MikroTik] > /ip/firewall/nat/add chain=srcnat action=masquerade
[admin@MikroTik] > /ip firewall/nat/add action=dst-nat chain=dstnat dst-port=3000 protocol=tcp to-addresses=172.16.0.2 to-ports=3000


五、外部镜像安装AdGuardHome

1、Container设置Docker镜像地址和目录

[admin@MikroTik] > /container/config/set registry-url=https://registry-1.docker.io tmpdir=container


2、创建AdGuardHome

[admin@MikroTik] > /container/add remote-image=adguard/adguardhome:latest interface=veth1 root-dir=container/adgurdhome logging=yes


3、等到Status变成Stopped,然后就可以启动了。

[admin@MikroTik] > /container/print
[admin@MikroTik] > /container/start 1

185-6.png


4、通过web地址,可以访问了。

185-5.png


六、上传镜像安装AdGuardHome

当然ROS也提供了离线上传镜像安装的方式

1、从其他Docker上导出镜像

root@debian:/home/staryu# docker save adguard/adguardhome > adguardhome.tar


2、上传adguardhome.tar到ROS Files

185-7.png


3、创建AdGuardHome

[admin@MikroTik] > /container/add file=adguardhome.tar interface=veth1 root-dir=container/adgurdhome logging=yes


4、选中,点击Start运行,同时可以通过Log查看日志

185-8.png


七、结尾

目前在Winbox中的file目录下无法看到container的配置文件,只能通过FTP去查看。

目前有 3 条评论

    • 昵称
    • 邮箱
    • 网址

    可乐 2023-02-11 16:192楼

    我拉取镜像网络连接不上会是啥问题啊unexpected response from container registry: Idle timeout - connecting;was unable to import, container 232acd1c-1b7e-4688-9bf3-987ddc4764e7评论

    宇宙西瓜 2022-12-07 22:251楼

    有没有可能运行 portainer评论

    星之宇 2022-12-08 09:11

    目前测试了。ROS下无法运行portainer回复