After spending time getting the HANA Express XSA docker image to run and seeing others with the same issues I was encountering, I thought I'd summarise the steps I followed to get it to work.
I currently have the HXE XSA docker image running with the following architecture:
I use ESXi 6.5 to run all my images etc. so Fedora Server with Docker runs on top of this. I've mentioned versions as I tried various OS and Docker versions and had different issues.
For the most part you can follow
this tutorial to complete the prerequisites, pull the image and start the container. There are a few things that I needed to add though to get this working, I'll outline these below.
- After installing the OS I used dnf upgrade to fetch all updates for Fedora Server.
- The tutorial suggests using Fedora Server 25 which, if you select it, comes with docker version 1.12.2. Docker run was never successful with this version, so I used https://docs.docker.com/install/linux/docker-ce/fedora/ to install docker ce and Fedora 28 is now supported.
- Step two in the tutorial explains an important step, increasing the default dm.basesize for new containers. By default docker container sizes are 10GB, this will increase the default container size to 50GB. This step caused me a couple of isses as I couldnt get this change to stick. Instead I used the daemon.json file created in /etc/docker/ to increase the Base Device Size. The daemon.json file should have the following line
{"storage-opt":["dm.basesize=50G"]}
- If you have trouble getting the password file to be read successfully from step 9 in the tutorial, consider hosting a json password file securely and then pass the https URL of the file in docker run like this: --passwords-url https://<myhostedjsonfile>;
- My final docker run had a few additions like: -h hxehost \ Docker run looked like this:
sudo docker run -p 39013:39013 -p 39015:39015 -p 39041-39045:39041-39045 -p 1128-1129:1128-1129 -p 59013-59014:59013-59014 -p 39030-39033:39030-39033 -p 51000-51060:51000-51060 -p 53075:53075 \
-h hxehost \
--ulimit nofile=1048576:1048576 \
--sysctl kernel.shmmax=1073741824 \
--sysctl net.ipv4.ip_local_port_range='60000 65535' \
--sysctl kernel.shmmni=524288 \
--sysctl kernel.shmall=8388608 \
--name express_edition \
store/saplabs/hanaexpressxsa:2.00.030.00.20180403.2 \
--agree-to-sap-license \
--passwords-url https://<HostedJSONFile>
- The final error I was getting at docker run was: FAIL: process hdbxscontroller HDB XS Controller not running| Could not startup the controller components: /hana/shared/HXE/xs/app_working/stager. FAILED to start: Could not startup the controller components: /hana/shared/HXE/xs/app_working/stager. This error was fixed by lcasavola at the end of the thread I opened here. Essentially, follow the tutorial linked above as well as the notes above and after you use docker run, if the container start fails, open another terminal window and log into the container: sudo docker exec -it express_edition bash cd to the following location /hana/shared/HXE/xs/app_working/stager. You'll see a number of files in it, I used rm -rf /hana/shared/HXE/xs/app_working/stager/* to remove all the contents of the folder. Stop the container using sudo docker stop express_edition then start with sudo docker start express_edition If you monitor the container now with sudo docker ps -a you'll notice that it shouldnt exit as it used to and the state will remain healthy.
- Give the container some time to fully start up and then you should be able to follow steps 10 onwards from the tutorial. You can use https://hxehost:39030 to access XSA services. Remember to map your hosts file on your local machine correctly to hxehost.
- These steps summarise the discusion in this thread and should provide you with a working version of HXE XSA in Docker.