IRIS Community Edition Docker container for ARM?
I see this available as an option on Docker Hub:
What ARM platform(s) is it designed for? When I saw it available, I rather hoped it might work on a Raspberry Pi but it failed to start!
docker pull store/intersystems/iris-community-arm64:2020.4.0.524.0
Hello Rob,
The only mention of arm64 I could find on the latest IRIS supported platforms page was the following:
Amazon EC2 for ARM64 Ubuntu 20.04 LTS*
Thanks Vic. Yes that was my conclusion too - it seems to be for AWS EC2 ARM Graviton processors. The question is whether it ought to work on other ARM chips too?
As far as ARM support for IRIS is concerned, Raspberry Pi would be really handy to have as it's a very low cost but extremely potent platform, and out there in huge numbers (eg you should see how many I have! :-). I know some work on an RPi/ARM port was done a while ago by an ISC intern but don't know what, if anything, became of it.
Apple M1 would be the other obvious ARM platform of course :-)
Could you provide what error you got?
I've tried to run it with Qemu, on GitHub Actions, or locally on macOS (Docker on macOS supports running ARM64 images as well)
I don't have RPi, yet. Did not manage to play with it, but at least I've managed to run it on AWS EC2 ARM64 instance.
My messages.log when failed was looked like this.
Dmitry
What I see on the Raspberry Pi is this if I try to start it (in foreground mode so I can see the error):
$ docker run --name my-iris -it --rm -p 9091:1972 -p 9092:52772 -p 9093:52773 -p 9094:7041 store/intersystems/iris-community-arm64:2020.3.0.221.0
standard_init_linux.go:211: exec user process caused "exec format error"
Just curious, which RPi you are tring to use?
The latest model RPi 4 running the standard Raspian OS. I have other Docker containers running fine on it - eg my rtweed/qewd-server-rpi and rtweed/mgweb-rpi ones (available on Docker Hub)
I've not tried the 3, but really there shouldn't be any difference as far as Docker is concerned - all my RPi containers work fine on the 3 and 4.
RPi 4 should be fine, it's just the first edition which got 64 bit, RPi 3 was 32 bit and it would not run IRIS anyway.
But the issue may be in Raspbian, which I suppose is 32 bit, while 64 bit yet in beta. And you have to install 64 bit version of Raspbian or Ubuntu 20.04 64 bit
Actually I think that might be the answer - uname -m on the RPi4 I've been using says armv7l which means 32 bit - it should say aarch64. The version of Raspbian is pretty old on that particular RPi4 and I'm not sure if they have now put out a 64-bit version of Raspbian?
Now I have another RPi4 (I did say I had loads of them, right!) running Ubuntu Server 20.04 which I believe is a 64 bit version - I'll give it a try on that one and report back
Rob
Bingo - nice find, Dmitry
Here we go on Ubuntu Server 20.04 on my RPi4:
ubuntu@ubuntu:~$ sudo docker run --name my-iris -it --rm -p 9091:1972 -p 9092:52772 -p 9093:52773 -p 9094:7041 store/intersystems/iris-community-arm64:2020.3.0.221.0
[WARN] No init process detected! This container may accumulate zombie processes if run for a long time. Consider using "docker create --init ..." or equivalent.
[INFO] Starting InterSystems IRIS instance IRIS...
[INFO] This copy of InterSystems IRIS has been licensed for use exclusively by:
InterSystems IRIS Community
Copyright (c) 1986-2020 by InterSystems Corporation
Any other use is a violation of your license agreement
Starting IRIS
11/26/20-11:02:27:145 (361) 0 [Generic.Event] Global buffer setting requires attention. Auto-selected 25% of total memory.
11/26/20-11:02:27:436 (361) 0 [Generic.Event] Allocated 449MB shared memory: 227MB global buffers, 80MB routine buffers
11/26/20-11:02:27:588 (361) 0 [WriteDaemon.UsingWIJFile] Using WIJ file: /usr/irissys/mgr/IRIS.WIJ
11/26/20-11:02:27:588 (361) 0 [WriteDaemon.CreatingNewWIJ] Creating a new WIJ file
11/26/20-11:02:34:614 (361) 0 [WriteDaemon.CreatedNewWIJ] New WIJ file created
11/26/20-11:02:34:629 (361) 0 [Generic.Event]
Startup of InterSystems IRIS [IRIS for UNIX (Ubuntu Server LTS for ARM64 Containers) 2020.3 (Build 221U) Thu Oct 1 2020 15:11:45 UTC]
in /usr/irissys/bin/
with mgr: /usr/irissys/mgr
with wij: /usr/irissys/mgr/IRIS.WIJ
from: /usr/irissys/mgr/
OS=[Linux], version=[#25-Ubuntu SMP PREEMPT Thu Oct 15 13:31:49 UTC 2020], release=[5.4.0-1022-raspi], machine=[aarch64]
nodename=[b6deee189a6f].
numasyncwijbuf: 8, swdwrtmax: 64, wijdirectio: on, synctype: 3
System Initialized.
11/26/20-11:02:34:642 (362) 0 [WriteDaemon.Started] Write daemon started.
11/26/20-11:02:45:083 (373) 0 [Database.MountedRW] Mounted database /usr/irissys/mgr/ (SFN 0) read-write.
11/26/20-11:02:45:216 (373) 0 [Utility.Event] Instance 'IRIS' starting on node b6deee189a6f by user irisuser
11/26/20-11:02:45:216 (373) 0 [Utility.Event] Using parameters from file '/usr/irissys/iris.cpf'
11/26/20-11:02:45:221 (373) 0 [Utility.Event] Loading DLLs
11/26/20-11:03:31:951 (373) 0 [Database.MountedRO] Mounted database /usr/irissys/mgr/irislib/ (SFN 1) read-only. Database label is marked read-only.
11/26/20-11:03:32:147 (373) 0 [Utility.Event] Switching to temporary %SYS Namespace
11/26/20-11:03:32:340 (373) 0 [Utility.Event] Loading Locale enuw (English, United States, Unicode) from objects
11/26/20-11:03:34:020 (373) 0 [Database.MountedRW] Mounted database /usr/irissys/mgr/iristemp/ (SFN 2) read-write.
11/26/20-11:03:34:073 (373) 0 [Utility.Event] /usr/irissys/mgr/iristemp/ initialized as IRISTEMP
11/26/20-11:03:34:080 (373) 0 [Utility.Event] Switching to default %SYS Namespace
11/26/20-11:03:34:199 (390) 0 [Utility.Event] Log Monitor Started
11/26/20-11:03:34:334 (391) 0 [Utility.Event] Clean Daemon Started
11/26/20-11:03:34:382 (373) 1 [Utility.Event] Configuration file /usr/irissys/iris.cpf is not the same as when last shut down
11/26/20-11:03:35:657 (373) 0 [Utility.Event] Updating configuration information from /usr/irissys/iris.cpf
11/26/20-11:03:35:759 (373) 0 [Utility.Event] Performing Journal Recovery
11/26/20-11:03:35:764 (373) 0 [Utility.Event] Graceful system shutdown, journal restore not required
11/26/20-11:03:35:765 (373) 0 [Utility.Event] Graceful system shutdown, transaction rollback not required
11/26/20-11:03:35:790 (373) 0 [Utility.Event] START: /usr/irissys/mgr/journal/20201126.001
11/26/20-11:03:35:853 (373) 0 [Generic.Event] INTERSYSTEMS IRIS JOURNALING SYSTEM MESSAGE
Journaling started to: /usr/irissys/mgr/journal/20201126.001
11/26/20-11:03:35:855 (373) 0 [Utility.Event] Journaling to /usr/irissys/mgr/journal/20201126.001 started.
11/26/20-11:03:35:979 (373) 0 [Utility.Event] Processing Startup section
11/26/20-11:03:36:001 (392) 0 [Utility.Event] Purging old application errors
11/26/20-11:03:36:246 (373) 0 [Utility.Event] Initializing Security system
11/26/20-11:03:37:325 (392) 0 [Database.MountedRW] Mounted database /usr/irissys/mgr/irislocaldata/ (SFN 3) read-write.
11/26/20-11:03:37:495 (373) 0 [Utility.Event] Processing Network section
11/26/20-11:03:37:502 (373) 0 [Utility.Event] Activating Network
11/26/20-11:03:37:756 (373) 0 [Utility.Event] Processing Databases section
11/26/20-11:03:37:959 (373) 0 [Database.MountedRW] Mounted database /usr/irissys/mgr/irisaudit/ (SFN 4) read-write.
11/26/20-11:03:37:978 (373) 0 [Utility.Event] Processing Namespaces section
11/26/20-11:03:37:979 (373) 0 [Utility.Event] Namespaces are up to date
11/26/20-11:03:37:979 (373) 0 [Utility.Event] Activating namespaces
11/26/20-11:03:37:991 (373) 0 [Utility.Event] Activating new namespace map
11/26/20-11:03:38:157 (373) 0 [Utility.Event] Namespace changes have been activated
11/26/20-11:03:38:363 (373) 0 [Utility.Event] Starting Super Server on port 1972
11/26/20-11:03:38:406 (373) 0 [Utility.Event] Network Lock Upload Phase Starting
11/26/20-11:03:38:410 (373) 0 [Utility.Event] Lock Upload Phase Complete
11/26/20-11:03:38:410 (373) 0 [Utility.Event] Processing Miscellaneous section
11/26/20-11:03:38:632 (397) 0 [Utility.Event] LMF Info: Licensed for 5 users.
11/26/20-11:03:38:644 (398) 0 [Utility.Event] Starting Servers
11/26/20-11:03:38:644 (373) 0 [Generic.Event] init_gcr_seed: gen_crypt_rand seeded from /dev/urandom: 64 bytes.
11/26/20-11:03:38:644 (373) 0 [Utility.Event] Processing Devices section
11/26/20-11:03:38:663 (373) 0 [Utility.Event] Processing DeviceSubTypes section
11/26/20-11:03:38:664 (373) 0 [Utility.Event] Processing MagTape section
11/26/20-11:03:38:684 (373) 0 [Utility.Event] Processing IO section
11/26/20-11:03:38:691 (373) 0 [Utility.Event] Processing SQL section
11/26/20-11:03:38:806 (373) 0 [Generic.Event] Auditing to /usr/irissys/mgr/irisaudit/
11/26/20-11:03:38:978 (373) 0 [Utility.Event] Executing ^ZSTU routine
11/26/20-11:03:38:984 (373) 0 [Utility.Event] Executing ^%ZSTART routine
11/26/20-11:03:38:985 (373) 0 [Utility.Event] Enabling logons
11/26/20-11:03:40:649 (398) 0 [Utility.Event] Private webserver started on 52773
11/26/20-11:03:40:650 (398) 0 [Utility.Event] Processing Shadows section (this system as shadow)
11/26/20-11:03:40:806 (373) 0 [Database.MountedRW] Mounted database /usr/irissys/mgr/user/ (SFN 5) read-write.
11/26/20-11:03:40:812 (398) 0 [Utility.Event] Processing Monitor section
11/26/20-11:03:41:242 (547) 0 [Utility.Event] Starting TASKMGR
11/26/20-11:03:41:404 (548) 0 [Utility.Event] [SYSTEM MONITOR] System Monitor started in %SYS
11/26/20-11:03:41:451 (398) 0 [Utility.Event] Shard license: 0
11/26/20-11:04:00:517 (373) 0 [Database.MountedRO] Mounted database /usr/irissys/mgr/enslib/ (SFN 6) read-only. Database label is marked read-only.
11/26/20-11:04:00:527 (373) 0 [Utility.Event] Initializing Interoperability during system startup
[INFO] ...started InterSystems IRIS instance IRIS
and then in another process I can shell in and run
and access the IRIS shell and database!
Amazing!
It's pretty fast two - I do have a pretty fast micro SD in the RPi4 but it looks like you can set 0.5m global nodes/sec in a very simple test:
USER>s s=$p($zts,",",2) f i=1:1:1000000 s ^rob(i)=$r(1000) i i=1000000 w $p($zts,",",2)-s
2.072394
Not bad for a $35 computer :-)
great and thanks!! just replicated in my Pi 4B. By now we may put this as the top application-server solution in IOT world. Arm is kind of future, so happy to see the compatibility.
BTW, RPi 4, 8Gb, with a prepared image of Ubuntu+Docker+IRIS CE, now available for pre-order on GlobalMasters
@Rob Tweed , @Dmitriy Maslennikov



Congratulations to you both! That's real ENGINEERING !
That's the power of Community! @Rob Tweed, @Dmitriy Maslennikov, really proud, thank you, guys!
Right @Evgeny Shvarov !
Thanks @Rob Tweed and @Dmitriy Maslennikov for the collaboration!
FWIW on the supported platform, at present we only test on AWS ARM64 as per https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=IS...
but obviously, I'm super happy that it works on RPi
Great news @Rob Tweed and @Dmitriy Maslennikov you got IRIS running on a RPi 4 in 64-bit mode! One can use IRIS now for powerful IoT applications too

Social networks
InterSystems resources
Log in or sign up
Log in or create a new account to continue
Log in or sign up
Log in or create a new account to continue
Log in or sign up
Log in or create a new account to continue