子菜单:/容器
包装要求:容器
容器是microtik对Lin雷竞技网站ux容器的实现,允许用户在RouterOS中运行容器化的环境。l雷竞技容器特性是在RouterOS v7.4beta4中添加的。l雷竞技
当安全专家发表他的漏洞研究时——任何人都可以应用这种漏洞;
有人会建立一个docker镜像,将做利用和提供Linux根shell;
通过使用root shell,有人可能会在你的RouterOS系统中留下永久的后门/漏洞,即使在移除docker镜像和禁用容器特性之后;l雷竞技
如果一个漏洞被注入到主或辅助routerboot(或供应商预加载程序)中,那么即使netinstall也可能无法修复它;
容器包兼容手臂arm64和x86架构。使用远程映像(类似于docker pull)功能需要在主存中有大量的空闲空间,16MB SPI闪存板可以在USB或其他磁盘媒体上使用预构建映像。
强烈建议使用外置磁盘
/容器
财产 | 描述 |
---|---|
cmd(字符串;默认值:) |
命令在容器内执行(将覆盖CMD参数) |
评论(字符串;默认值:) |
简短的描述 |
dns(字符串;默认值:) |
|
域名(字符串;默认值:) |
|
入口点(字符串;默认值:) |
二进制文件的路径 |
envlist(字符串;默认值:) | 环境变量列表(在容器/ env)与容器一起使用 |
文件(字符串;默认值:) | Container *tar.gz如果是从文件导入,则为tarball |
主机名(字符串;默认值:) | |
接口(字符串;默认值:) | 与容器一起使用的第一个接口 |
日志记录(字符串;默认值:) | 如果设置为yes,则所有容器生成的输出都将显示在RouterOS日志中l雷竞技 |
挂载(字符串;默认值:) | 从/container/ Mounts /子菜单挂载该容器 |
远程图像(字符串;默认值:) | 如果使用外部注册表,要安装的容器映像名称(在/container/config set registry-url=…下配置) |
root-dir(字符串;默认值:) | 用于保存主存之外的容器存储 |
停止信号(字符串;默认值:) | |
workdir(字符串;默认值:) | CMD入口点的工作目录 |
先决条件:
Device-mode默认情况下限制容器的使用,在授予容器模式访问之前-确保您的设备是完全安全的。
启用容器模式
/系统/ device-mode /更新集装箱= yes
如果在X86上使用容器,则需要按下重置按钮来确认设备模式,或者进行冷重启。
为容器添加第5个接口:
/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1
为容器创建一个桥接,并添加vth:
/interface/bridge/add name=dockers /ip/address/add address=172.17.0.1/24 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/24
为容器创建环境变量(可选):
/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"
定义挂载(可选):
/container/mounts/add name=etc_pihole src=disk1/etc dst=/etc/pihole /container/mounts/add name=dnsmasq_pihole src=disk1/etc-dnsmasq. etcd dst = / etc / dnsmasq.d
src =
指向RouterOSl雷竞技的位置(也可以是src = disk1 / etc_pihole
例如,如果您决定将配置文件放在外部USB介质上),dst =
指向定义的位置(关于指向哪里的信息,请参阅容器手册/wiki/github)。如果src
目录在第一次使用时不存在,那么它将用容器中的任何内容填充dst
的位置。
添加容器映像
如果您希望在log - add中查看容器输出日志= yes
在创建容器时,root-dir应该指向ext3或ext4格式的外部驱动器。不建议对容器使用内部存储。
有多种方法可以添加容器:
设置registry-url(用于从Docker注册表下载容器),并将解压目录(tmpdir)设置为附带的USB介质:
/集装箱/ config /设置registry-url = https://registry - 1.码头工人。io tmpdir = disk1 /拉
把图片:
/container/add remote-image=pihole/pihole:最新的接口=veth1 root-dir=disk1/pihole mount =dnsmasq_pihole,etc_pihole envlist=pihole_envs
图像将被自动拉出并提取到根目录,状态可以通过使用来检查
/集装箱/打印
这些链接是最新的
的2022年6月16日.请确保下载与你的RouterOS设备架构匹配的正确版本。l雷竞技
从docker hub更新sha256 sum以获取最新的镜像文件
Arm64: docker pull pihole/pihole:latest@sha256:4cef8a7b32d318ba218c080a3673b56f396d2e2c74d375bef537ff5e41fc4638 docker save pihole/pihole > pihole.tar arm docker pull pihole/pihole:latest@sha256: 684c59c7c057b2829d19d0817926c03145c1e2fad2fae3d9c36a94 docker save pihole/pihole > pihole.tar amd64 docker pull pihole/pihole:latest@sha256:f56885979dcffeb902d2ca51828c92118199222ffb8f6644505e7881e11eeb85 docker save pihole/pihole > pihole.tar
下载并解压缩文件后,将其上传到你的RouterOS设备。l雷竞技从tar映像创建一个容器
/container/add file=pihole.tar interface=veth1 envlist=pihole_envs root-dir=disk1/pihole mounts=dnsmasq_pihole,etc_pihole hostname= pihole
要使用Dockerfile并制作自己的docker包-需要安装docker以及buildx或其他构建器工具包。
最简单的方法是下载并安装Docker引擎:
https://docs.docker.com/engine/install/
安装后检查是否有额外的架构可用:
Docker buildx 1
应该返回:
名称/节点驱动程序/端点状态平台默认* docker默认运行linux/amd64、linux/arm64、linux/riscv64、linux/ppc64le、linux/s390x、linux/386、linux/arm/v7、linux/arm/v6
如果没有-安装额外的架构:
运行——privileged——rm tonistiigi/binfmt——install all
拉或创建你的项目,包括Dockerfile和构建,提取图像:
Git clone https://github.com/pi-hole/docker-pi-hole.git CD docker-pi-hole docker buildx build——no-cache——platform arm64 -t piholeDocker save pihole > pihole.tar
上传pihole.tar到你的Routel雷竞技rOS设备。
Linux系统上的映像和对象可以修剪
从tar映像创建一个容器
/container/add file= PiHole .tar interface=veth1 envlist=pihole_envs mounts=dnsmasq_pihole,etc_pihole hostname=PiHole
确保已添加容器和状态=停止
通过使用/集装箱/打印
/集装箱/ 0开始
您应该能够访问PiHole网页面板通过导航到http://172.17.0.2
在你的网页浏览器中。
端口可以使用dst-nat(其中192.168.88.1路由器的IP地址)转发:
/ip firewall NAT add action=dst-nat chain=dstnat dst-address=192.168.88.1 dst-port=80 protocol=tcp to-addresses=172.17.0.2 to-ports=80
对于Pihole容器-将DNS服务器设置为容器的第v接口IP地址-
/ip DNS set servers=172.17.0.2
或更改DHCP服务器设置以提供Pihole DNS
/集装箱/ config /设置ram-high = 200
这将软限制RAM使用-如果RAM使用超过高边界,则c组的进程将受到限制并承受沉重的回收压力。
在路由器重启后使用start-on-boot选项启动容器(从7.6beta6开始)
/container/print 0 name="2e679415-2edd-4300- 8fabb -a779ec267058" tag="test_arm64:latest" os="linux" arch="arm" interface=veth2 root-dir=disk1/alpine mounts="" dns="" logging=yes start-on-boot=yes status=running /container/set 0 start-on-boot=yes
有可能到达运行容器壳:
/集装箱/壳0
启用日志记录以从容器获取输出:
/container/set 0 logging=yes