Mikrotik使用docker
凭借卓越的灵活性和高度集成的功能,Mikrotik在我心中稳居HomeLab最佳厂商设备的宝座。本文将详细介绍如何在Mikrotik上部署docker镜像。
环境准备
首先你需要知道你的Mikrotik版本是多少,架构是什么。基于这些信息,去官网查找模块包。以我个人设备为例:

我的设备版本是7.18.2,是目前这个时间的最新稳定版本,架构是arm64
https://mikrotik.com/download
在该URL中找到版本对应的Extra packages

该扩展包中包含:container-7.18.2-arm64.npk。
把这个文件拖到mikrotik的file根目录中,进行以下操作:
重启。Mikrotik在重启过程中会自动安装这个扩展模块
/system/device-mode/update container=yes配置该命令,启用container。
注:配置完成之后会提示让你断电,此时必须物理断电,无法通过重启操作达成MT的需求
再次开机,即可开始配置
配置操作
网络配置
首先需要配置一个Bridge接口,该接口用于把所有的docker容器网卡绑在一起,且充当所有容器的网关

为该Bridge接口配置一个IP地址,并配置NAT,NAT成Mikrotik本身的WAN口IP即可

此处配置了172.16.139.0/24网段,bridge接口ip为254
为了简化配置,仅把该网段做src-nat
/ip firewall nat add action=src-nat chain=srcnat src-address=172.16.139.0/24 to-addresses=x.x.x.x(该ip为mikrotik网关IP)
紧接着配置VETH接口,该接口为docker容器的网卡,每个docker容器都需要一个VETH接口
同样配置172.16.139.0/24网段,网关为bridge接口ip,如不使用ipv6则不需要配置ipv6网关


把VETH接口绑定到bridge里,即完成网络环境配置
容器配置
首先需要配置仓库

此处我使用:https://index.docker.io,也可以使用任何其他的公有仓库或者私有仓库
注:目前docker在国内处于被封禁状态,即需要科学手段才能够做pull容器的操作,当然如果有环境的话也可以直接pull完镜像,上传到mikrotik
我使用该仓库需要访问的网段如下Dst.Address,大家可以直接进行优化:

然后就可以配置容器了,以hello-world为例:
前往hub.docker.com搜索需要的镜像名:hello-world

获取到pull镜像的命令,在mikrotik中只需要docker pull后面的容器名称即可

点击+号进行配置,此处我们选择在线拉取镜像所以配置remote image,如果是上传文件的形式,则需要在file中选择上传的镜像文件
interface选择前面配置的veth1
root dir就是容器在mikrotik中的文件目录
勾选logging,这个功能非常重要,有任何的日志都可以在mikrotik的日志中输出,包括但不限于拉取镜像失败,拉取成功,docker容器的日志
全部配置完成之后点击OK即会直接Pull镜像,Pull完之后容器会是stop状态,需要手工启用