از RouterOS 7 به بعد، میکروتیک میتواند کانتینر اجرا کند؛ همان image هایی که با داکر میشناسید. یعنی میشود یک سرویس کوچک مثل Pi-hole (بلاک تبلیغات در سطح DNS)، یک DNS-over-HTTPS، یا یک ابزار مانیتورینگ را مستقیم روی روتر اجرا کرد، بدون سرور جدا. قابلیت جذابی است، ولی روتر سرور نیست؛ پس اول محدودیتها و خطرها را بدانید.
چه چیزهایی لازم است
- معماری: arm، arm64 یا x86 (از جمله CHR). دستگاههای mipsbe و mmips پشتیبانی نمیشوند. image هم باید هممعماری روتر باشد.
- پکیج
containerنصبشده، همنسخهٔ RouterOS. - حافظه: دانلود image از رجیستری به RAM آزاد زیادی نیاز دارد. میکروتیک توصیه میکند کانتینر روی حافظهٔ داخلی نباشد و یک دیسک خارجی (USB یا NVMe) با سرعت مناسب داشته باشید.
- دسترسی فیزیکی: برای فعال کردن، باید دکمهٔ ریست را بزنید (یا در x86 و CHR یک خاموش و روشن کامل).
فعال کردن
/system/device-mode/update container=yesبعد از این دستور چند دقیقه فرصت دارید دکمهٔ ریست را یک بار کوتاه بزنید (نگه ندارید). این قفل عمدی است: کسی که از راه دور به روتر نفوذ کرده، نمیتواند خودش کانتینر روشن کند. با /system/device-mode/print نتیجه را ببینید.
شبکهٔ کانتینر
کانتینرها از راه یک اینترفیس مجازی به اسم veth به روتر وصل میشوند. ساختار شبیه حالت bridge داکر است: یک شبکهٔ کوچک جدا که روتر gateway آن است:
/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1
/interface/bridge/add name=containers
/interface/bridge/port/add bridge=containers interface=veth1
/ip/address/add address=172.17.0.1/24 interface=containers
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24دانلود image
/container/config/set registry-url=https://registry-1.docker.io tmpdir=disk1/tmpرجیستری پیشفرض میکروتیک lscr.io است و با این دستور Docker Hub میشود. Docker Hub به خاطر مقررات صادراتی آمریکا IPهای ایران را مسدود کرده؛ از ایران یا آینههای داخلی Docker Hub را در registry-url بگذارید (توضیح و ریسکهایش در مقالهٔ نصب داکر)، یا image را روی کامپیوتر دیگری با docker pull و docker save به فایل .tar تبدیل کنید و در Files روتر بریزید:
docker pull --platform linux/arm64 pihole/pihole:latest
docker save pihole/pihole:latest -o pihole.tarمثال: Pi-hole
/container/envs/add list=ENV_PIHOLE key=TZ value="Asia/Tehran"
/container/envs/add list=ENV_PIHOLE key=FTLCONF_webserver_api_password value="STRONG-PASSWORD"
/container/mounts/add list=MOUNT_PIHOLE src=disk1/volumes/pihole dst=/etc/pihole
/container/add remote-image=pihole/pihole:latest interface=veth1 \
root-dir=disk1/images/pihole mountlists=MOUNT_PIHOLE envlist=ENV_PIHOLE \
name=pihole start-on-boot=yes logging=yes
/container/print
/container/start piholeاگر image را از فایل میآورید، به جای remote-image بنویسید file=disk1/pihole.tar. بعد از add، وضعیت کانتینر اول extracting است؛ صبر کنید تا stopped شود و بعد start کنید. حالا در DHCP، DNS دستگاهها را 172.17.0.2 بگذارید و پنل Pi-hole روی همان آدرس باز میشود.
هشدارهای امنیتی
- هر image یعنی کد شخص ثالث روی روترتان. فقط image رسمی و معروف را اجرا کنید؛ image ناشناس از رجیستری ناشناس میتواند در پشتی باشد.
- حفره هم داشته است: در مهر ۱۴۰۵ حفرهای (CVE-2026-89021) گزارش شد که با یک image دستکاریشده، فایل بیرون از کانتینر نوشته و پاک میشد؛ در 7.24.2 رفع شد. جزئیات در مقالهٔ حفرهها.
- اگر لازمش ندارید خاموشش کنید:
/system/device-mode/update container=no. - پورت کانتینر را با dst-nat به اینترنت باز نکنید، مگر واقعاً لازم باشد.
- منابع روتر محدود است؛ کانتینر سنگین میتواند خود مسیریابی را کند کند. برای سرویسهای جدیتر (وبسایت، دیتابیس، چند کانتینر با هم) یک سرور مجازی و Docker Compose انتخاب درستتری است.
منابع
- MikroTik Manual — Containers manual.mikrotik.com/docs/containers
- MikroTik Manual — Device-mode manual.mikrotik.com/docs/system-information-and-utilities/device-mode
- Pi-hole — Docker image github.com/pi-hole/docker-pi-hole