Enable IA32 to support Dockers that require 32 bit kernel emulation


Recommended Posts

I would like to suggest that kernel support for IA32 Emulation support be enabled.

 

This would allow docker that need 32 bit emulation enabled in the kernel to run.  No packages or libraries need to be added to the unRaid operating system.  If the docker has a copy of the 32 bit libraries and IA32 is enabled in the kernel the 32 bit binary inside the docker will execute.

 

I have tested this on an unRaid 6.3 slackware64 VM with the results of the steps and test result located here.

 

If someone could point me to instructions on how to rebuild the unRaid 6.3 kernel and build the boot image, I would be more than happy to do further real world testing this on my unRaid server.

Link to comment

I have built a test kernel based on unRaid 6.4 rc6 and enabled IA32 Emulation. This configuration option allows the kernel to emulate a 32 bit environment.  I DID NOT have to install any additional libraries in the unRaid operating system.  I am now able to run 32 bit binaries inside dockers that contain the 32 bit libraries.  

 

I have been testing with TuRz4m Ark Survival docker.

 

I am willing to share my unRaid 6.4 rc6 test kernel to anyone that would like to test it out for themselves.  All you need to do is upgrade to unRaid 6.4 rc6 then replace the bzimage, bzmodules, and bzfirmware files with mine.  PM me if you would like me to send them to you.

 

NOTE:  This test kernel also has USB Attached SCSI (CONFIG_USB_UAS) protocol enabled for more testing that I am going to do when I get home.

  • Upvote 1
Link to comment
  • 2 weeks later...
  • 4 weeks later...
  • 7 months later...
On 6/25/2017 at 11:37 PM, csmccarron said:

I have built a test kernel based on unRaid 6.4 rc6 and enabled IA32 Emulation. This configuration option allows the kernel to emulate a 32 bit environment.  I DID NOT have to install any additional libraries in the unRaid operating system.  I am now able to run 32 bit binaries inside dockers that contain the 32 bit libraries.  

 

I have been testing with TuRz4m Ark Survival docker.

 

I am willing to share my unRaid 6.4 rc6 test kernel to anyone that would like to test it out for themselves.  All you need to do is upgrade to unRaid 6.4 rc6 then replace the bzimage, bzmodules, and bzfirmware files with mine.  PM me if you would like me to send them to you.

 

NOTE:  This test kernel also has USB Attached SCSI (CONFIG_USB_UAS) protocol enabled for more testing that I am going to do when I get home.

Apologies for reviving an old thread, however @csmccarron are you able to provide some guidance on how you managed to set up TuRz4m's Ark Docker.

 

I enabled dockerhub searches in CA, and attempted to add the container with the basic ports described here: https://hub.docker.com/r/turzam/ark/

However regardless of what I put in there, i get an error "/usr/bin/docker: Invalid containerPort: ${STEAMPORT}.".

It seems like whatever I put in as the ${STEAMPORT} or ${SERVERPORT} translates into the first part of the code but not the second '27015:${SERVERPORT} and that's what seems to be causing the error.

Please note I am an unRaid noob, and I have no experience with linux command line, but i'm willing to learn! Most of my setup has been using SpaceInvader One's extremely helpful vids.

Context: Am currently running an ARK server on a Windows VM, looking to move to docker.

EDIT: Runing unRaid 6.5.0

TIA!

scr.png

scr2.png

Edited by Boo-urns
added unRaid version
Link to comment
26 minutes ago, Squid said:

It's expecting you to substitute ${....} with an appropriate port number

Apologies, I mixed up the previous 2 screenshots. The first image above was the default settings screen. I have tried entering "${27015}", "27015", "{27015}" to no avail.

The below is what I enter in the setting vs the error that is produced.

scn1.png

scn2.png

Link to comment
52 minutes ago, Boo-urns said:

I have tried entering "${27015}", "27015", "{27015}"

I have tried that as I mentioned above, using 7778 as both of the STEAMPORTs and 27015 as both SERVERPORTs.

 

It still gives me the same error "/usr/bin/docker: Invalid containerPort: ${STEAMPORT}.".

 

Link to comment
9 minutes ago, pwm said:

A recommendation is that the GUI displays the field in evil red as long as the port numbers aren't valid integers within allowed number range. And preferably that it isn't possible to save if any of the ports are invalid.

 

The better recommendation is that container authors preset the correct values already. That is the whole purpose of the XML file, unload the burdon from the user.

 

  • Upvote 1
Link to comment
Just now, bonienl said:

 

The better recommendation is that container authors preset the correct values already. That is the whole purpose of the XML file, unload the burdon from the user.

 

No - not better since it's a completely different issue.

 

Good defaults will help, but since people are expected to be able to change values the GUI should try to help by catch invalid values.

Link to comment
19 minutes ago, Boo-urns said:

I have tried that as I mentioned above, using 7778 as both of the STEAMPORTs and 27015 as both SERVERPORTs.

 

It still gives me the same error "/usr/bin/docker: Invalid containerPort: ${STEAMPORT}.".

 

 

Click on "Edit" for a particular setting, this will open a second window. Can you show what it looks like?

Link to comment

see below.

Also, scrolling through the https://hub.docker.com/r/turzam/ark/ page, in the Variable section it states the below. Is it likely this is the cause?

  • SERVERPORT
    Ark server port (can't rebind with docker, it doesn't work) (default : 27015)
  • STEAMPORT
    Steam server port (can't rebind with docker, it doesn't work) (default : 7778)

Is there an alternate means to install this docker using the command line on the page? Because it seems the script that runs when I get my error message is the same as the below, but with 7778:7778 defined rather than the 7778:${STEAMPORT} which is generated.

Recommended Usage

  • First run
    docker run -it -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -p 32330:32330 -e SESSIONNAME=myserver -e ADMINPASSWORD="mypasswordadmin" -e AUTOUPDATE=120 -e AUTOBACKUP=60 -e WARNMINUTE=30 -v /my/path/to/ark:/ark --name ark turzam/ark

screen.png

Link to comment

I didn't follow this whole conversation and jumped in at the very end.

 

Are you using a preset template to install the container? If yes, it needs to be notified to the container author that preset values are completely wrong, these are not variables.

 

Your option at this moment is to remove all current settings and create them again (see: Add another Path, Port, Variable or Device), which allows to set all the fields properly.

  • Like 1
Link to comment
3 minutes ago, bonienl said:

I didn't follow this whole conversation and jumped in at the very end.

 

Are you using a preset template to install the container? If yes, it needs to be notified to the container author that preset values are completely wrong, these are not variables.

 

Your option at this moment is to remove all current settings and create them again (see: Add another Path, Port, Variable or Device), which allows to set all the fields properly.

I don't believe i'm using a template per se, as i'm attempting to install via CA using the "search dockerhub" function. So I believe the template is created on-the-fly by CA, by converting the dockerfile. Disclaimer: this is a wild guess.

I'll have a crack at creating the variables manually, in the mean time as the existing fields are incorrect, but *mandatory, what should I place in there?

Link to comment

Ok. That's interesting . The conversion did work correctly and according to design but the dockerfile in its expose lines references environment variables. I'll have to issue an update to ignore things like that.

In the meantime, all those ports that are coming up as ${} delete them completely. And then follow the directions on the docker page on how to set the environment variables (and add them as a variable in the template)

  • Like 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.