Skip to content
InstagramYouTubeFacebook

Tutorial

RouterOS Containers: Docker σε MikroTik

Εκτελέστε containers τύπου Docker σε MikroTik RouterOS v7: ενεργοποιήστε τη λειτουργία container, στήστε δίκτυο veth και αποθήκευση, αναπτύξτε σε κλίμακα.

Περίληψη Το MikroTik RouterOS v7 μπορεί να εκτελεί containers συμβατά με Docker απευθείας στον router, ώστε το φιλτράρισμα DNS, οι πράκτορες παρακολούθησης και οι μικρές υπηρεσίες δικτύου να βρίσκονται δίπλα στο επίπεδο δρομολόγησης αντί σε ξεχωριστή συσκευή. Αυτός ο οδηγός καλύπτει τις απαιτήσεις υλικού και αρχιτεκτονικής, την ασφαλή ενεργοποίηση της λειτουργίας device-mode για container, τη δημιουργία δικτύου veth και bridge με NAT, την ανάπτυξη του πρώτου σας container και τη διαχείριση containers σε έναν στόλο. Το RouterOS 7.23 (Μάιος 2026) διεύρυνε τον κατάλογο έτοιμων προς εκτέλεση εφαρμογών container, καθιστώντας το πρακτική επιλογή τόσο για παρόχους όσο και για κατασκευαστές εργαστηρίων.

Διάγραμμα αρχιτεκτονικής των containers του MikroTik RouterOS που δείχνει έναν router να φιλοξενεί στοιβαγμένα containers υπηρεσιών τύπου Docker

Τι Είναι τα Containers στο MikroTik RouterOS;

Τα containers στο MikroTik RouterOS είναι η υλοποίηση των Linux containers από τη MikroTik, που επιτρέπει σε μια συσκευή RouterOS v7 να εκτελεί απομονωμένα, συμβατά με Docker images εφαρμογών απευθείας στον router. Λειτουργούν με images από το Docker Hub, GCR, Quay και άλλα registries, και παρόλο που το RouterOS χρησιμοποιεί τη δική του σύνταξη CLI αντί της εντολής docker, η υποκείμενη συμπεριφορά είναι η ίδια — τραβήξτε ένα image, δώστε του δίκτυο, προσαρτήστε αποθήκευση και εκτελέστε το. (Τεκμηρίωση MikroTik)

Για έναν πάροχο ή ένα εργαστήριο, αυτό σημαίνει ότι μικρές υπηρεσίες κοντά στο δίκτυο μπορούν να συστεγαστούν με το επίπεδο δρομολόγησης: ένα φίλτρο DNS Pi-hole ή AdGuard, ένας πράκτορας παρακολούθησης, ένας reverse proxy ή μια IoT bridge. Η σταθερή έκδοση RouterOS 7.23 της 25ης Μαΐου 2026 πρόσθεσε μια μακρά λίστα έτοιμων προς εκτέλεση εφαρμογών — όπως paperless-ngx, nextcloud, lorawan-stack, birdnet-go και frontends διαχείρισης Docker όπως portainer και dockge — μαζί με έναν νέο διακόπτη network-outgoing-access για να εμποδίσει ένα container να ξεκινήσει εξερχόμενη κίνηση. (Changelog RouterOS 7.23)

Απαιτήσεις και Υλικό

Το πακέτο container είναι συμβατό με τις αρχιτεκτονικές arm, arm64 και x86 και πρέπει να εγκατασταθεί πριν από οτιδήποτε άλλο. Το τράβηγμα ενός remote image χρειάζεται πολύ ελεύθερο χώρο, οπότε η MikroTik συνιστά εξωτερική αποθήκευση αντί της εσωτερικής flash της συσκευής. (Τεκμηρίωση MikroTik)

Σχεδιάστε για εξωτερικά μέσα μέσω USB, SATA ή NVMe, διαμορφωμένα με σύστημα αρχείων που υποστηρίζει το RouterOS. Η MikroTik προτείνει έναν δίσκο ικανό για τουλάχιστον 100 MB/s διαδοχική απόδοση και 10K τυχαία IOPS — οι πιο αργοί δίσκοι κάνουν την αποσυμπίεση του image βασανιστικά αργή. Αποφύγετε την τοποθέτηση όγκων container στην ενσωματωμένη αποθήκευση, που είναι μικρή και φθείρεται κάτω από τα μοτίβα εγγραφής των containers. Οι συσκευές με πολύ περιορισμένη flash θα πρέπει να χρησιμοποιούν προκατασκευασμένα images στον συνδεδεμένο δίσκο αντί να τα τραβούν εξ αποστάσεως.

Ασφαλής Ενεργοποίηση της Λειτουργίας Device-Mode για Container

Τα containers είναι απενεργοποιημένα από προεπιλογή και, για καλό λόγο, απαιτούν φυσική πρόσβαση για ενεργοποίηση. Ενεργοποιήστε τη λειτουργία με:

/system/device-mode/update container=yes

Το RouterOS περιμένει στη συνέχεια να επιβεβαιώσετε με πάτημα του κουμπιού reset ή ψυχρή επανεκκίνηση. Αυτή η πύλη φυσικής επιβεβαίωσης είναι ένα σκόπιμο μέτρο ασφαλείας: μόλις ενεργοποιηθεί η λειτουργία container, τα containers μπορούν να προστεθούν, να εκκινηθούν και να αφαιρεθούν εξ αποστάσεως, και ένα κακόβουλο image μπορεί να γίνει σημείο εισόδου στον router. Η MikroTik είναι ξεκάθαρη γι’ αυτό — αν η συσκευή σας RouterOS παραβιαστεί, τα containers καθιστούν την εγκατάσταση κακόβουλου λογισμικού τετριμμένη, και δεν υπάρχει καμία εγγύηση ασφαλείας για images τρίτων.

Αντιμετωπίστε τον router που φιλοξενεί containers ως ακριβώς τόσο ασφαλή όσο το λιγότερο αξιόπιστο image που εκτελείτε σε αυτόν. Αναπτύξτε μόνο images που εμπιστεύεστε, κρατήστε τη συσκευή πίσω από firewall και διαβάστε τον οδηγό μας για ασφαλείς λειτουργίες device-mode πριν το ενεργοποιήσετε στην παραγωγή.

Δημιουργία του Δικτύου Container

Τα containers χρειάζονται μια εικονική διεπαφή, μια bridge και NAT για να φτάσουν στο internet. Το μοτίβο παρακάτω αντικατοπτρίζει το δίκτυο “bridge” στο Docker. Πρώτα δημιουργήστε μια διεπαφή veth και μια bridge που μοιράζεται τη διεύθυνση πύλης της:

/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1
/interface/bridge/add name=containers
/ip/address/add address=172.17.0.1/24 interface=containers
/interface/bridge/port add bridge=containers interface=veth1

Ένα veth μπορεί να εξυπηρετήσει πολλά containers, και η δημιουργία επιπλέον ζευγών veth/bridge σας επιτρέπει να απομονώσετε ομάδες containers μεταξύ τους. Αν είστε νέοι στο bridging του RouterOS, ο οδηγός μας για τη διαμόρφωση bridge εξηγεί το υποκείμενο μοντέλο. Στη συνέχεια, προσθέστε έναν κανόνα masquerade ώστε η εξερχόμενη κίνηση των containers να μεταφράζεται — δείτε τον οδηγό διαμόρφωσης NAT για την πλήρη εικόνα:

/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24

Αναπτύξτε το Πρώτο σας Container

Στρέψτε το registry και τον προσωρινό κατάλογο αποσυμπίεσης στον εξωτερικό σας δίσκο και μετά προσθέστε το image. Το παρακάτω παράδειγμα Pi-hole είναι το καθιερωμένο από την τεκμηρίωση της MikroTik:

/container/config/set registry-url=https://registry-1.docker.io tmpdir=disk1/tmp
/container/add remote-image=pihole/pihole interface=veth1 root-dir=disk1/images/pihole name=pihole logging=yes

Η προσθήκη του container ξεκινά τη λήψη και την αποσυμπίεση, αλλά δεν το εκτελεί. Ελέγξτε την πρόοδο με /container/print και περιμένετε μέχρι status=stopped, και μετά εκκινήστε το:

/container/start pihole

Τέλος, δημοσιεύστε την υπηρεσία προωθώντας μια θύρα από τον router στη διεύθυνση veth:

/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

Το Pi-hole απαντά τώρα στην LAN IP του router. Η εκτέλεση φιλτραρίσματος DNS με αυτόν τον τρόπο είναι μια εναλλακτική στις εγγενείς λίστες αποκλεισμού του RouterOS — αν προτιμάτε τη διαδρομή χωρίς container, δείτε τον οδηγό μας για το RouterOS adlist.

Διαχείριση Containers σε έναν Στόλο

Ένα μεμονωμένο container σε έναν router είναι εύκολο. Το πραγματικό λειτουργικό ερώτημα για έναν πάροχο είναι η συνέπεια: το ίδιο image, το ίδιο σχήμα veth και NAT, η ίδια διάταξη αποθήκευσης και τα ίδια start-on-boot και όρια μνήμης σε κάθε συσκευή. Το RouterOS σας δίνει τα δομικά στοιχεία — το start-on-boot=yes επιβιώνει των επανεκκινήσεων, και τα memory-high ή memory-max περιορίζουν τη RAM ανά container ώστε μια ανεξέλεγκτη υπηρεσία να μην μπορεί να στερήσει πόρους από το επίπεδο δρομολόγησης:

/container/config/set memory-high=200M
/container/set pihole start-on-boot=yes

Το δύσκολο μέρος είναι να γίνει αυτό πανομοιότυπα σε δεκάδες ή εκατοντάδες απομακρυσμένους routers και μετά να αποδειχθεί ότι ο καθένας πράγματι επανήλθε μετά από επανεκκίνηση — ειδικά όταν η συσκευή βρίσκεται πίσω από CGNAT και δεν μπορείτε απλώς να φτάσετε στη δημόσια IP της.

Συμβουλές

  • Κρατήστε κάθε όγκο container στον εξωτερικό δίσκο· ποτέ στο εσωτερικό NAND.
  • Χρησιμοποιήστε ένα ξεχωριστό ζεύγος veth/bridge για να απομονώσετε μη αξιόπιστα containers από τα αξιόπιστα.
  • Ορίστε memory-max σε οτιδήποτε δεν εμπιστεύεστε πλήρως ώστε ο router να παραμένει ανταποκρίσιμος.
  • Για ένα καθαρό περιβάλλον δοκιμών πριν αγγίξετε την παραγωγή, εκτελέστε τα ίδια images σε μια εικονικοποιημένη παρουσία CHR πριν τα αναπτύξετε σε φυσικούς routers.

Κάντε το Επόμενο Βήμα

Τα containers μετατρέπουν έναν router MikroTik σε έναν μικροσκοπικό host εφαρμογών, αλλά ένας στόλος τέτοιων hosts χρειάζεται ενορχήστρωση. Το MKController δημιουργεί πρότυπα της διαμόρφωσης RouterOS κεντρικά, τα εφαρμόζει σε κάθε συσκευή στο απόθεμά σας και παρακολουθεί την απόκλιση, ώστε να βλέπετε ποιος router απέκλινε — και μέσω του NATCloud φτάνει σε συσκευές πίσω από CGNAT για να επιβεβαιώσει ότι ένα container επανεκκινήθηκε μετά τη συντήρηση. Αυτό κλείνει το κενό μεταξύ της χειροκίνητης διαμόρφωσης ενός container και της αξιόπιστης λειτουργίας τους σε ολόκληρο ένα δίκτυο παρόχου.

Ξεκινήστε τη δωρεάν δοκιμή MKController