As mentioned earlier in this document, a container is an isolated environment to run a set of processes. It looks almost like a virtual machine with its own operating system, but is not, and usually starts almost as fast as a local process.

In a distributed development architecture, the use of Containers is a good way of limiting infrastructure costs. Containers are not supposed to hold any permanent data and are meant to be destroyed and recreated often. One can save data in a container, as long as he’s ok with losing it after a restart, as most tools assume they can recreate a container on a whim.

It is possible to install SAP instances on a container. Windows containers do exist, but they’re mostly created in Linux.

For the ActiveControl abapGIT integration created by Basis Technologies, Docker has been used.


Dockerfile

Images are typically created using a dockerfile. With a properly defined dockerfile one just runs docker build

Doing this results in a fully working image, fully defined by the dockerfile.

An image can also be created by committing a running container.


Creating SAP Container

Ideally, Basis Technologies would have written a dockerfile to get a linux distribution, install all dependencies and start a fully scripted installation. But some of these are not available in a dockerfile, only when running an existing container.

For this reason Basis Technologies needed to split the work into 2 steps:

1. Create an OS image with all the dependencies

2. Install SAP in a running container (manually, but scripted would be better)

  • Volumes were mounted in advance to hold the database
  • Once installed, we saved the resulting image and archived the volume contents
  • When we want to start a container we first create a volume and initialize it with the archived DB. Starting a new instance takes about 10 minutes, destroying it about 1

This process is slightly labour intensive, but is not a massive concern given it only needs to be done once in a while.

It should be noted that a number of small issues needed to be addressed whilst setting up Containers for SAP. These are noted below for reference of Customer users that might come across the same.

Typical container scenario SAP requirement Solution
Random dynamic hostname Fixed hostname —hostname flag
Random mac address License linked to mac address —mac-address flag
Quick termination Needs a few minutes or the DB will get corrupted —stop-timeout flag
Dynamic DNS domain Fixed DNS domain Custom scripts to patch at startup
Usually maps services to different ports Expects all ports to end with the same 2 digits Map different containers to the same ports but different IPs
Needs uuidd Added to startup script
Generates zombie processes catatonit

Feedback

Was this helpful?

Yes No
You indicated this topic was not helpful to you ...
Could you please leave a comment telling us why? Thank you!
Thanks for your feedback.

Post your comment on this topic.

Post Comment