Mình cũng mới làm quen với Docker thôi, cũng chưa dùng thực tế Docker trên các nền tảng khác mà sử dụng Docker trên OpenWRT luôn. Hướng dẫn này giúp bạn nào chưa biết có thể cài Docker trên OpenWRT.
Mình đã thử nghiệm với các bản OpenWRT 23.x và 24.x
Router của bạn phải có tầm 1Gb dung lượng bộ nhớ. Thường thì cài Docker xong cũng mất độ 2, 300mb rồi, còn cài các image nữa, cũng tốn, nên chơi Docker thì có tầm 1Gb dung lượng bộ nhớ cho thoải mái.
RAM tầm 1Gb là đủ dùng.
CPU đương nhiên càng khỏe càng tốt.
Mục lục nội dung
Hướng dẫn cài đặt Docker trên OpenWRT
Bạn nên cài package bằng lệnh trên ssh vì trong quá trình cài dung lượng tải về nhiều, nếu cài bằng giao diện web luci thì dễ bị lỗi out time không cài được.
Bạn dán lần lượt từng lệnh sau vào ssh
opkg update
opkg install dockerd
opkg install docker
opkg install luci-app-dockerman
Riêng phần cài package luci-app-dockerman có một vài lưu ý như sau.
Với bản OpenWRT 23.x sau khi cài xong bạn kiểm tra trong các app đã cài xem có package docker-compose hay chưa, nếu chưa có thì bạn cài thêm.
opkg install docker-compose

Với bản 24.x của OpenWRT có thể sẽ bị lỗi package luci-app-dockerman, nếu bạn vào phần Docker -> Configuration mà không thấy có phần DockerMan settings như ảnh dưới đây thì có thể bản đấy đã bị lỗi.

Cách khắc phục như sau:
1, Bạn có thể chuyển qua dùng firmware ImmortalWrt thay vì OpenWRT. Package luci-app-dockerman bên đó không bị lỗi.
2, Nếu bạn vẫn muốn dùng OpenWRT thì bạn có thể vào đây. tìm thư mục dành cho CPU router của bạn, vào mục luci, tìm package luci-app-dockerman bản 0.5.26-r1 hoặc mới hơn và về cài thủ công là được.
Hướng dẫn sử dụng cơ bản.
Mình cũng không chuyên sâu lắm đâu, và đây là những gì mình biết.
Tìm Image
Nếu bạn tự build được Image thì không cần quan tâm phần này, nếu bạn không tự build được Image thì có thể tìm kiếm Image ở Hub Docker.
Pull Image
Bạn vào Docker -> Images để pull hoặc import image cần dùng.

Tạo Containers từ Image
Bạn vào Docker -> Containers chọn Add để tạo Containers mới.

Đoạn cấu hình 1 Containers mới nó tùy thuộc vào Images của bạn, nếu bạn dùng Images trên Hub Docker thì nhớ đọc kĩ cấu hình config được demo trong mô tả.

Trong phần cấu hình mình chỉ lưu ý 2 phần:
1, Networks
Bridge – Containers của bạn sẽ được cấp một IP nội bộ riêng được tạo từ mạng bridge, nếu sau bạn muốn mở port ra ngoài internet thì bạn cần dùng IP nội bộ này để cấu hình trong Firewall -> Port Forwards
Host – Containers sẽ dùng IP mặc định của router và bạn không tùy chỉnh được port cho containers. Không nên dùng cái này trừ khi bắt buộc.
2, Exposed Ports
Nếu bạn chọn Network Bridge thì sẽ có cái này. Cái này là để quy định Containers của bạn sẽ chạy port nào. Ví dụ bạn muốn chạy port 5000 thì điền vào là 5000:5000

Các cấu hình còn lại tùy thuộc vào Image, để lại comment nếu bạn gặp khó khăn, mình sẽ cố gắng hỗ trợ.
Cấu hình ra ngoài Internet
Ngoài việc mở port trong Firewall -> Port Forwards bạn cũng sẽ cần vào phần Docker -> Configuration -> DockerMan settings và thêm các giao diện pppoe-wan mà bạn cần mở docker ra internet từ những giao diện này. Lưu ý đây là các giao diện mạng quay pppoe chứ không phải dhcp nha.

Tiếp theo bạn vào Firewall -> Zone Settings và edit giao diện mạng docker.

Thêm các giao diện WAN mà bạn muốn Docker sử dụng để ra ngoài Internet trong mục Allow forward to destination zones.

Ok, vậy là xong rồi đó, Bạn check lại xem Containers đã chạy như ý chưa. Để lại bất cứ câu hỏi và góp ý nào ở phần bình luận để chúng ta có thể sử dụng Docker trên OpenWRT thành thạo hơn.