aerospike / aerospike-server.docker

Dockerfiles for Aerospike Server
Other
141 stars 68 forks source link

ARM64 support #33

Closed odidev closed 1 year ago

odidev commented 6 years ago

I am trying to build Aerospike package for ARM64v8 architecture. After checking the dependencies, I can notice that Aerospike-server Docker is fetching the prebuilt x86_64 package from Aerospike server, and the same is not available for ARM64.

For this, I have started compile Aerospike-server source code and I have managed to compile the get resultant package too. The changes include the use of LuaJIT-2.1.0-beta3 and some minor changes.

Also, I am able to run the package on my arm64v8 board.

Please let me know, what should be next step to get aerospike in official arm64v8 repository. Also do guide me, whether this is the right approach or is there any other way too.

Regards,

volmarl commented 6 years ago

That is great that you were able to create the ARM64 build. Let us research your feature request on an official build. I take it you could also submit a pull request against https://github.com/aerospike/aerospike-server

bbulkow commented 6 years ago

Hi Odidev,

Thanks for your work and interest in Aerospike!

If you have signed our contributor license agreement ( CLA ), we can view and accept your pull request -- or dialog, and hopefully accept.

Have you run reasonable workloads, like running a decent YCSB test against a cluster? If so, what machines / where? I think I've discussed this with some cloud guys, like maybe Packet.io....

I would be interested in a discussion of why you've done the port, what hardware you consider interesting for Aerospike, and other ideas. You can contact me at brian@aerospike.com over email.

If you do submit the pull request, we can consider running the code internally, and moving it from something more than community supported.... we would like to, and consider pre-building the ARM64 code as you suggest. Our largest barrier will be figuring out where to test it, if you have any ideas on the topic.

odidev commented 6 years ago

@volmarl , @bbulkow - Raised a PR.

Please have a look at the changes done by me. These minimal changes can enhance aerospike for arm64v8 as well.

I would really love to see arm64v8 in the list of officially supported architectures for aerospike.

Regards,

odidev commented 6 years ago

@bbulkow - Hi Brian, In case you like for something more interesting to run arm64v8 builds then:

Shippable supports free Arm64 CI/CD and I believe Codefresh does too (both 64-bit and 32-bit for both providers):

https://blog.shippable.com/shippable-arm-packet-deliver-native-ci-cd-for-arm-architecture
http://docs.shippable.com/platform/tutorial/workflow/run-ci-builds-on-arm/

CodeFresh Beta signup: https://goo.gl/forms/aDhlk56jZcblYokj1

If you need raw infrastructure the WorksOnArm project will supply full servers if you want to deal with metal: https://github.com/worksonarm/cluster/

Regards,

bbulkow commented 6 years ago

Odidev, please note that to accept your changes you will need a CLI signed ( contibutor license agreement ) . We just have updated it to be as idendical as possible to the Android CLI which most companies find reasonable. Regarding whether we can put ARM into our long term support plans, and do all of our test procedures, we might need more business justification, and if you can help provide that over email, we can consider it.

odidev commented 6 years ago

@bbulkow Hi Brian,

Can you please give a link to sign CLI? ---> Regarding this, I will get back to you very soon.

But in the meantime can you please have a look at the pushed changes and provide your valuable comments over the same.

odidev commented 6 years ago

Hi @bbulkow Just signed Aerospike CLI :)

Please have a look and provide your further guidance.

Regards,

odidev commented 5 years ago

Just for the ease of access, this is the link to raised PR: https://github.com/aerospike/aerospike-server/pull/6 Please look for changes from "Odidev"

Regards,

lag-linaro commented 5 years ago

It would be great to see AArch64 (ARM64) support in this Aerospike.

Let me know if you need any testing done or other help.

brihh commented 5 years ago

Greetings. Have you been able to run multi-node cluster tests on ARM?

thx.bri.

odidev commented 5 years ago

@brihh Hi Brian, Can you please guide, how to execute multi-node cluster tests?

However, it would be really great if you can try it at your end too, as you are best aware of expectations and executions. I can provide all the code changes if you plan to execute at your end too.

Regards,

brihh commented 5 years ago

I don't have ready access to a ARM system that i can try the code. For multi-node, you may need to modify the conf files on 2 machines to look for each other, and then just start the servers on both machines. they should connect and you should see 'CLUSTER-SIZE 2' INFO messages in the logs. and the admin tool should show both servers.

odidev commented 5 years ago

Hi Brian, Thanks for the details. It really looks like a complex scenario. But I will give it a try.

Will it be possible for you, if you can get access to Codefresh and Shippable systems for Arm64v8. Otherwose I can check internally if can be easier for you to get hands on arm64 systems.

Actually, it would be really easier if you can check the code and give a try.

Regards

lag-linaro commented 5 years ago

@odidev how did you get on with your testing?

odidev commented 5 years ago

Hi @lag-linaro: Still trying to figure out, how it can be done.

In reality, I am not such an expert for this scenario, so it is taking time.

Will it be possible for you to test this at your end? It would be really very helpful if you can also take this action. I can provide you with the complete code dump if required.

Regards,

lag-linaro commented 5 years ago

@odidev unfortunately not. Please continue trying.

odidev commented 5 years ago

Hi @brihh

Can you please give me the proper steps to perform test cases. I am still sceptical about modifications and I don't want to create issues just because of any confusion in performing the test.

It would be great if you can give me proper steps starting from the finish of compilation of source code, which I can execute and get the results.

Regards

brihh commented 5 years ago

so if you have 2 ARM machines with the build, you should be able to start the server on both machines with the default aerospike_dev.conf. with one, you'll see CLUSTER-SIZE=1 in the output. start up the 2nd server machine, and they should connect and you should see CLUSTER-SIZE=2 on both.

then, any test should talk to both. you can do the aerospike-client-c/benchmarks tests to really stress the server out and test the inter-node communications.

.bri.

odidev commented 5 years ago

Hi Brian,

Thanks for the details. Can you please help me out, how to get CLUSTER-SIZE in output. And where to check the output. Right now I am just executing asd binary to see logs over a console. I would really appreciate your help.

Please bear with me as I am completely new to this module.

Regards,

brihh commented 5 years ago

yeah, that should be in the console output, and also in the run/log/aerospike.log file. you should see it in the output every 10seconds in the heartbeat message.

lag-linaro commented 5 years ago

How are you getting on @odidev?

lag-linaro commented 5 years ago

@brihh it looks like clustering isn't working well on aarch64. The same setup works on x86_64.

Would you (or anyone else) be kind enough to help me with the root cause of the issue please?

I made the following change to the 2nd node's config file:

        heartbeat {
               address any
                # mesh is used for environments that do not support multicast
                mode mesh
                port 3002
@@ -49,6 +49,8 @@ network {

                interval 150
                timeout 10
+
+               mesh-seed-address-port 172.17.0.2 3002
        }

Which gives the following output:

Dec 11 2018 14:44:50 GMT: INFO (as): (as.c:319) <><><><><><><><><><>  Aerospike Community Edition build 4.3.0.2-8-g897920b  <><><><><><><><><><>                                                                   
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) # Aerospike database configuration file.                                                                                                                     
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)                                                                                                                                                              
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) # This stanza must come first.                                                                                                                               
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) service {                                                                                                                                                    
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   user root                                                                                                                                                  
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   group root                                                                                                                                                 
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   paxos-single-replica-limit 1 # Number of nodes where the replica count is automatically reduced to 1.                                                      
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   pidfile /var/run/aerospike/asd.pid                                                                                                                         
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   service-threads 4                                                                                                                                          
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   transaction-queues 4                                                                                                                                       
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   transaction-threads-per-queue 4                                                                                                                            
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   proto-fd-max 15000                                                                                                                                         
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) }                                                                                                                                                            
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)                                                                                                                                                              
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) logging {                                                                                                                                                    
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)                                                                                                                                                              
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   # Log file must be an absolute path.                                                                                                                       
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   file /var/log/aerospike/log {
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           context any info
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   # Send log messages to stdout
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   console {
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           context any info
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) network {
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   service {
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           address any
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           port 3000
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           # Uncomment the following to set the `access-address` parameter to the
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           # IP address of the Docker host. This will the allow the server to correctly
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           # publish the address which applications and other nodes in the cluster to
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           # use when addressing this node.
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           # access-address <IPADDR>
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           # access-address 172.17.0.3
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   heartbeat {
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)         address any
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           # mesh is used for environments that do not support multicast
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           mode mesh
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           port 3002
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           # use asinfo -v 'tip:host=<ADDR>;port=3002' to inform cluster of
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           # other mesh nodes
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           interval 150
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           timeout 10
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           mesh-seed-address-port 172.17.0.2 3002
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   fabric {
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)       address any
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           port 3001
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   info {
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)       address any
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           port 3003
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) namespace test {
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   replication-factor 2
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   memory-size 1G
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   default-ttl 30d # 5 days, use 0 to never expire/evict.
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   #       storage-engine memory
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   # To use file storage backing, comment out the line above and use the
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   # following lines instead.
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   storage-engine device {
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           file /opt/aerospike/data/test.dat
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           filesize 4G
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)           data-in-memory true # Store data in memory in addition to file.
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)   }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922) }
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3922)
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3945) system file descriptor limit: 1048576, proto-fd-max: 15000
Dec 11 2018 14:44:50 GMT: INFO (hardware): (hardware.c:1854) detected 4 CPU(s), 4 core(s), 1 NUMA node(s)
Dec 11 2018 14:44:50 GMT: INFO (socket): (socket.c:2676) Node port 3001, node ID bb9030011ac4202
Dec 11 2018 14:44:50 GMT: INFO (config): (cfg.c:3988) node-id bb9030011ac4202
Dec 11 2018 14:44:50 GMT: INFO (namespace): (namespace_ce.c:87) {test} beginning cold start
Dec 11 2018 14:44:50 GMT: INFO (drv_ssd): (drv_ssd.c:3578) opened file /opt/aerospike/data/test.dat: usable size 4294967296
Dec 11 2018 14:44:50 GMT: INFO (drv_ssd): (drv_ssd.c:1044) /opt/aerospike/data/test.dat has 4096 wblocks of size 1048576
Dec 11 2018 14:44:50 GMT: INFO (drv_ssd): (drv_ssd.c:3127) {test} found all 1 devices fresh, initializing to random 4434616822074274795
Dec 11 2018 14:44:50 GMT: INFO (drv_ssd): (drv_ssd.c:1009) {test} loading free & defrag queues
Dec 11 2018 14:44:50 GMT: INFO (drv_ssd): (drv_ssd.c:948) /opt/aerospike/data/test.dat init defrag profile: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Dec 11 2018 14:44:50 GMT: INFO (drv_ssd): (drv_ssd.c:1033) /opt/aerospike/data/test.dat init wblock free-q 4088, defrag-q 0
Dec 11 2018 14:44:50 GMT: INFO (drv_ssd): (drv_ssd.c:2350) {test} starting device maintenance threads
Dec 11 2018 14:44:50 GMT: INFO (drv_ssd): (drv_ssd.c:1587) {test} starting write worker threads
Dec 11 2018 14:44:50 GMT: INFO (drv_ssd): (drv_ssd.c:860) {test} starting defrag threads
Dec 11 2018 14:44:50 GMT: INFO (as): (as.c:379) initializing services...
Dec 11 2018 14:44:50 GMT: INFO (tsvc): (thr_tsvc.c:136) 4 transaction queues: starting 4 threads per queue
Dec 11 2018 14:44:50 GMT: INFO (hb): (hb.c:6775) added new mesh seed 172.17.0.2:3002
Dec 11 2018 14:44:50 GMT: INFO (fabric): (fabric.c:800) updated fabric published address list to {172.17.0.3:3001}
Dec 11 2018 14:44:50 GMT: INFO (partition): (partition_balance.c:199) {test} 4096 partitions: found 4096 absent, 0 stored
Dec 11 2018 14:44:50 GMT: INFO (hb): (hb.c:5504) updated heartbeat published address list to {172.17.0.3:3002}
Dec 11 2018 14:44:50 GMT: INFO (batch): (batch.c:732) starting 4 batch-index-threads
Dec 11 2018 14:44:50 GMT: INFO (batch): (thr_batch.c:373) starting 4 batch-threads
Dec 11 2018 14:44:50 GMT: INFO (fabric): (fabric.c:452) starting 8 fabric send threads
Dec 11 2018 14:44:50 GMT: INFO (fabric): (fabric.c:469) starting 16 fabric rw channel recv threads
Dec 11 2018 14:44:50 GMT: INFO (fabric): (fabric.c:469) starting 4 fabric ctrl channel recv threads
Dec 11 2018 14:44:50 GMT: INFO (fabric): (fabric.c:469) starting 4 fabric bulk channel recv threads
Dec 11 2018 14:44:50 GMT: INFO (fabric): (fabric.c:469) starting 4 fabric meta channel recv threads
Dec 11 2018 14:44:50 GMT: INFO (fabric): (fabric.c:475) starting fabric accept thread
Dec 11 2018 14:44:50 GMT: INFO (fabric): (socket.c:702) Started fabric endpoint 0.0.0.0:3001
Dec 11 2018 14:44:50 GMT: INFO (hb): (hb.c:7017) initializing mesh heartbeat socket: 0.0.0.0:3002
Dec 11 2018 14:44:50 GMT: INFO (hb): (hb.c:7046) mtu of the network is 1500
Dec 11 2018 14:44:50 GMT: INFO (hb): (socket.c:702) Started mesh heartbeat endpoint 0.0.0.0:3002
Dec 11 2018 14:44:50 GMT: INFO (nsup): (thr_nsup.c:1103) starting namespace supervisor threads
Dec 11 2018 14:44:50 GMT: INFO (demarshal): (thr_demarshal.c:886) starting 4 demarshal threads
Dec 11 2018 14:44:50 GMT: INFO (demarshal): (socket.c:702) Started client endpoint 0.0.0.0:3000
Dec 11 2018 14:44:50 GMT: INFO (info-port): (thr_info_port.c:300) starting info port thread
Dec 11 2018 14:44:50 GMT: INFO (info-port): (socket.c:702) Started info endpoint 0.0.0.0:3003
Dec 11 2018 14:44:50 GMT: INFO (as): (as.c:423) service ready: soon there will be cake!
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
Dec 11 2018 14:44:50 GMT: WARNING (hb): (hb.c:3711) found a socket 0x2841700000000000 without an associated channel
[...]

I snipped the log here, but these found a socket ... without associated channel messages don't stop.

Again, this setup works for x86_64. I don't see any reason why it wouldn't on aarch64.

lag-linaro commented 5 years ago

Any more help on this please?

lag-linaro commented 5 years ago

It's been a while. Has there been any more interest in supporting AArch64 at all?

mariaefi29 commented 3 years ago

Dear developers,

Do you have any updates on that issue? With M1 release it is very important, I suppose.

Unfortunately, I cannot start my application locally for developing now on my new laptop with M1 chip that was given to me at work :(

vbabenkoru commented 3 years ago

Second that. If there is any workaround for running Aerospike in Docker on an Apple M1, I'd appreciate that.

madejejej commented 2 years ago

I wanted to bump this to see if there's any progress here?

laptus commented 2 years ago

Any updates?

Fedessi8187 commented 2 years ago

Hello, do we have any update about this issue ? Thanks a lot in advance for your answer

agolovenko commented 2 years ago

M1 user here upvoting this

kportertx commented 1 year ago

6.2 has been released with ARM support: https://download.aerospike.com/download/server/notes.html#6.2.0.0

agolovenko commented 1 year ago

@kportertx the latest tag in Docker Hub https://hub.docker.com/_/aerospike is still 6.1.0.3 however. When will it be available there?

kportertx commented 1 year ago

@agolovenko Generally about 2 weeks after we publish to:

Though we have since discovered that tini isn't using the correct binary for ARM and will have to re-release the 6.2.0.0 image. Oddly the containers based on the image seem to come run fine under docker's qemu emulation. If anyone has any ideas why this works please let me know - in the meantime I'll add a test to verify that the intended architecture is running.