Building OpenWrt Container image

Building Openwrt Container image - I want to build openwrt container with my packages and run that on Ubuntu VM as container.
Do we have standard instructions or link for that?

Does this help?

https://openwrt.org/docs/guide-user/virtualization/start

2 Likes

Hmm I tried to run Docker OpenWrt Image up using below link:
https://openwrt.org/docs/guide-user/virtualization/docker_openwrt_image?s[]=container

It fails with below step, get stuck while running below command "docker run -i openwrt-x86-generic-rootfs /sbin/init" and services are not coming up:

root@ubuntu:~# docker run -i openwrt-x86-generic-rootfs cat /etc/banner


| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -| || | | || || |
|
_____|| |
||||___||| |____|
|
| W I R E L E S S F R E E D O M

ATTITUDE ADJUSTMENT (12.09, r36088)

  • 1/4 oz Vodka Pour all ingredients into mixing
  • 1/4 oz Gin tin with ice, strain into glass.
  • 1/4 oz Amaretto
  • 1/4 oz Triple sec
  • 1/4 oz Peach schnapps
  • 1/4 oz Sour mix
  • 1 splash Cranberry juice

root@ubuntu:~# docker run -i openwrt-x86-generic-rootfs ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:03
inet addr:172.17.0.3 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:176 (176.0 B) TX bytes:0 (0.0 B)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

root@ubuntu:~# docker run -i openwrt-x86-generic-rootfs /sbin/init
init started: BusyBox v1.19.4 (2013-03-06 20:07:44 UTC)
sysinit: mount: permission denied (are you root?)

sysinit: /etc/rc.common: eval: line 1: can't create /proc/sys/kernel/hostname: Read-only file system

sysinit: date: can't set kernel time zone: Operation not permitted

sysinit: /etc/rc.common: line 85: can't create /proc/sys/kernel/core_pattern: Read-only file system

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: Loading defaults

sysinit: sysctl: error setting key 'net.ipv4.tcp_syncookies': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.tcp_ecn': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.tcp_window_scaling': Read-only file system

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: Loading synflood protection

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: Adding custom chains

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: Loading zones

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: Loading forwardings

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: Loading rules

sysinit: getsockopt failed strangely: Operation not permitted

sysinit: Loading redirects

sysinit: Loading includes

sysinit: Optimizing conntrack

sysinit: Loading interfaces

sysinit: udhcpc: SIOCGIFINDEX: No such device

sysinit: dnsmasq: setting capabilities failed: Operation not permitted

sysinit: sysctl: error setting key 'kernel.panic': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.conf.default.arp_ignore': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.conf.all.arp_ignore': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.ip_forward': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.icmp_echo_ignore_broadcasts': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.icmp_ignore_bogus_error_responses': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.tcp_ecn': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.tcp_fin_timeout': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.tcp_keepalive_time': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.tcp_syncookies': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.tcp_timestamps': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.tcp_sack': Read-only file system

sysinit: sysctl: error setting key 'net.ipv4.tcp_dsack': Read-only file system

sysinit: sysctl: error setting key 'net.ipv6.conf.all.forwarding': Read-only file system

sysinit: sysctl: error setting key 'net.netfilter.nf_conntrack_acct': Read-only file system

sysinit: sysctl: error setting key 'net.netfilter.nf_conntrack_checksum': Read-only file system

sysinit: sysctl: error setting key 'net.netfilter.nf_conntrack_max': Read-only file system

sysinit: sysctl: error setting key 'net.netfilter.nf_conntrack_tcp_timeout_established': Read-only file system

sysinit: sysctl: error setting key 'net.netfilter.nf_conntrack_udp_timeout': Read-only file system

sysinit: sysctl: error setting key 'net.netfilter.nf_conntrack_udp_timeout_stream': Read-only file system

JFYI my goal is to run my openwrt image (which I have built with my packages) as docker container.
Above steps I just tried to verify how openwrt standard image run as docker conainter on my Ubuntu Host.

wth attitude adjustment?

We just tried to make 12.09 (attitude adjustment), my goal is run on openwrt 18.06.4 version actually.

You probably should use 19.07 or snapshot since there are container related improvements.
And your container needs cap_net_admin.

Thanks, is there any Ubuntu version and Openwrt version is known or listed somewhere? combination of which is already verified i.e. running openwrt as container on Ubuntu host machine.

I have made a build script for LXD (https://github.com/mikma/lxd-openwrt) and I run OpenWrt 19.07.1 as my main router in a LXD containers on Ubuntu 18.04.

1 Like

OK, Thanks!
As I am trying to run openwrt as docker container, planning to follow this https://github.com/oofnikj/docker-openwrt
not sure what are the configuration parameters changes required in Dockerfile or openwrt.conf to make it work. Didn't get any sample working configuration or guide for reference.

I could not making it working, Openwrt 19.07 as well by following the suggested below link:

https://openwrt.org/docs/guide-user/virtualization/docker_openwrt_image?s[]=container

Got the same error of sysinit service failure and got stuck while executing following command:
root@turmes /home/zoobab [18]# docker run -i openwrt-x86-generic-rootfs /sbin/init

Any pointers or suggestion would be helpful.

My goal is now to first run Openwrt (any version) as docker container, later I will be working to add my packages on top of it (Not sure if packages like strongswan etc. is possible to add in openwrt docker container or not?).

Thanks,
Prashant

Hi, author of https://github.com/oofnikj/docker-openwrt here.
Configuration is set in openwrt.conf. Have a look at openwrt.conf.example for a working example. You will at least need to change the wifi interface name, but otherwise it should work.