在mikrotik routerOS中使用docker

上回介绍了在vultr安装了routerOS,本文在前文基础上分享如何在routerOS中使用docker,自从router7.X版本开始,routerOS支持运行docker,但只支持CPU架构ARM和X86,这极大的扩展了routerOS的功能……一直以来我只是在VPS上使用routerOS,而曾经我需要专门使用一台服务器跑routerOS,然后再用另一台服务器跑其它各种应用,从经济上就让我不得不多花一台服务器的费用;而如今routerOS支持docker后,我可以用一台配置略高的服务器跑routerOS,然后在上面的docker运行其它各种应用,利用率大大提高。本文末尾有视频操作。

一、在官网(https://mikrotik.com/download)下载Extra packages上传到routerOS(我的vps是X86架构的,ARM架构则下载对应的Extra packages)

把下载的Extra packages(我的是all_packages-x86-7.8.zip)压缩包解压后,上传到routerOS的file当中,然后重启(命令是/system/reboot)。

system->package中看是否有这些包,重点是container

二、设置Device-Mode为enterprise。Device-mode是一种对设备功能限制属性,即限制对特定功能配置的访问,有enterprise(企业模式)和home(家庭模式)两种模式,默认情况下都是限制container使用的,需要我们设置成enterprise模式,目前Winbox无法管理,只能使用命令。下面是相关的常用命令。

/*查看当前Device-Mode*/ 
[admin@MikroTik] > system/device-mode/ print 
/*在enterprise模式下时,启用container模式*/ 
[admin@MikroTik] > system/device-mode/ update container=yes

然后就会要求我们在5分钟内设备关机,在vultr面板进行断电重启

三、设置网络

[admin@MikroTik]>/interface/bridge/add name=docker
[admin@MikroTik]>/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1
[admin@MikroTik]>/ip/address/add address=172.17.0.1/24 interface=docker
[admin@MikroTik]>/interface/bridge/port add interface=veth1 bridge=docker
/*设置流量出口*/
[admin@MikroTik]>/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24
 /*访问容器172.17.0.2*/
[admin@MikroTik]>/ip/firewall/nat/add action=dst-nat chain=dstnat dst-address="VPS IP" dst-port=80 protocol=tcp to-addresses=172.17.0.2 to-ports=80

设置好这些,下面就可以拉取镜像(也可以上传.tar.ge文件)运行容器了,当然还是从网络拉取镜像更方便。

/*Container设置Docker镜像地址*/
[admin@MikroTik] > /container/config/set registry-url=https://registry-1.docker.io
/*拉取镜像*/
[admin@MikroTik] > /container/add remote-image=testcontainers/helloworld interface=veth1 dns=8.8.8.8 hostname=ss logging=yes
/*查看容器*/
[admin@MikroTik] > /container/print
[admin@MikroTik] > /container/start 编号

其中的testcontainers/helloworld对应的就是dockerhub里docker pull testcontainers/helloworld中的名字。有关容器的详细用法需要去官网查阅文档。https://help.mikrotik.com/docs/display/ROS/Container

发表回复