侧边栏壁纸
博主头像
咕咕鸡博主等级

行动起来,活在当下

  • 累计撰写 17 篇文章
  • 累计创建 27 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

RouterOS开启container(容器)

咕咕鸡
2024-03-22 / 0 评论 / 0 点赞 / 40 阅读 / 3732 字 / 正在检测是否收录...

RouterOS开启container(容器)

# 官方文档
https://help.mikrotik.com/docs/display/ROS/Container

提示:
容器功能只支持arm64和x86架构
需要RouterOS v7.4beta版本以上,这里用的版本为7.4rc2 Testing
根据官网文档来说,启用容器功能需要将软路由连上显示器,通过本地操作启用,不能通过winbox或者ssh之类的远程连接方式开启。
启用容器会产生安全问题
根据容器运行情况,可能需要较大内存和硬盘。

# 启用container 本地控制台操作,非远程
/system/device-mode/update container=yes
会提示强制断电,重新启动生效。
 
# 安装container package 也就是在 Extra packages 包里的 container-7.4rc2.npk
下载页面:https://mikrotik.com/download
下载地址:https://download.mikrotik.com/routeros/7.4rc2/all_packages-x86-7.4rc2.zip
 
把此包通过Files菜单里的Upload功能上传到ros里,然后重启ros。
在System菜单里的Packages功能查看安装结果。只要显示出来,就是安装成功。
 
执行
/container/print
没有任何错误提示的话,则安装完成。
 
# 为容器创建一个veth设备(Virtual Ethernet 虚拟以太网接口)
/interface/veth/add name=veth1 address=172.17.0.2/16 gateway=172.17.0.1
 
# 为容器创建一个桥接网络,并将veth加入。
/interface/bridge/add name=dockers
/ip/address/add address=172.17.0.1/16 interface=dockers
/interface/bridge/port add bridge=dockers interface=veth1
 
# 配置nat,让容器可以联网
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/16
 
 
################################ 非必须 ###############################################
# 为容器创建环境变量
/container/envs/add name=pihole_envs key=TZ value="Europe/Riga"
/container/envs/add name=pihole_envs key=WEBPASSWORD value="mysecurepassword"
/container/envs/add name=pihole_envs key=DNSMASQ_USER value="root"
这个东西就是linux下的docker创建容器时的 -e 参数,为容器设置环境变量用的。
 
#定义目录挂载
/container/mounts/add name=etc_pihole src=disk1/etc dst=/etc/pihole
/container/mounts/add name=dnsmasq_pihole src=disk1/etc-dnsmasq.d dst=/etc/dnsmasq.d
这个东西就是linux下的docker创建容器时的 -v 参数,为容器映射宿主机目录用的。
################################ 非必须 ###############################################
 
 
############################################################以下部分暂不成功,跳过,实际用不上###################################################
# 设置仓库地址
/container/config/set registry-url=https://0hl2tn76.mirror.aliyuncs.com
 
# 拉取镜像
/container/add remote-image=redsocks2 interface=veth1
[admin@MikroTik] > /container/print
 0 name="ff5c9259-8bfc-42fc-8e3b-78157d0eb268" tag="library/redsocks2:latest" os="" arch="" interface=veth1 mounts="" dns="" status=error
 
可以看到status状态是error,错误。
 
# 删除这个容器
 /container/remove numbers=0
############################################################以上部分暂不成功,跳过,实际用不上##################################################
 
 # 从本地电脑导入镜像,(自己制作的镜像)
 amd64
    docker pull sk5
    docker save sk5 > sk5.tar
将 sk5.tar 上传到ros
 
# 从tar文件创建容器
/container/add file=sk5.tar interface=veth1 hostname=sk5
/container/print
0 name="3658640f-0333-4468-ab81-19c1db430dd4" tag="" os="linux" arch="amd64" interface=veth1 mounts="" dns="" hostname="sk5" status=stopped
 
# 启动容器
/container/start number=0
 
/container/print
 0 name="3658640f-0333-4468-ab81-19c1db430dd4" tag="" os="linux" arch="amd64" interface=veth1 mounts="" dns="" hostname="sk5" status=running
 
# 进入容器的shell
 /container/shell number=0
 
 内网直接互通,如果容器里跑一个nginx,可以直接用172.17.0.2访问了。
 
 # ros重启跟随启动容器
 /system/scheduler/add name=start-container start-time=startup on-event={:delay 3s;/container/start number=0}

任务计划参考:https://www.youtube.com/watch?v=mjLEMexz6_0&t=1s

0

评论区