Domino on Linux/Unix, Troubleshooting, Best Practices, Tips and more ...

 
alt

Daniel Nashed

 

    Domino on Docker Requirements and Configuration

    Daniel Nashed  9 February 2019 10:17:06
    A while ago I started into look into Domino for Docker.
    I have contributed my start script under Apache 2.0 license to the official IBM Docker container.

    The first version is already available but we are still not 100% sure about versioning. And add-on product support.
    Currently the GitHub repository contains the Docker script and helper script to automatically build an image on your own environment.

    For license and legal reasons IBM cannot just put the ready to go image into the Docker registry to just pull it down.
    But there easy to follow scripts to get it working. I would still wish that at some point having a official Docker community image at least will be available.

    In addition I am preparing a Docker start script that will do all operations you need to get your Domino server up and running on Docker.
    It will build an own customizable image that will be based on the official IBM Domino Docker image.

    The script will -- very similar to my start script -- help you with all steps in an unmanaged Docker environment, From build, run, start, stop to updating, log collecting and interacting with the container.

    Thomas Hampel (IBM) will present the Docker image and also the Docker start script that we plan to include at IBM Think next week.

    Probably this will be included into the GitHub project either as part of my start script or an extra script.
    My start script already includes a Docker entry script and official Docker support for that reason.

    But beside that there is some other important information that I would like to share.

    There are some requirements that you will need to look into when you want to successfully run Domino on Docker.
    Those requirements did not make it yet into the IBM Docker technote but I want to share them for everyone who is running Domino on Docker.

    -- Daniel


    Domino on Docker Requirements and Configuration

    We have tested creating and running the image with the following environment.
    There are some special settings that you need to successful run Domino on Docker.
    And there have been recent changes to Docker. So you should make sure that you are running a current Docker version.

    Environment

    - CentOS Linux release 7.5.1804 (Core)
    - Docker CE 18.09.0

    - Linux and OSX, Windows is not supported!


    Storage and Driver Requirements

    Overlay2 Driver

    The overlay driver is an important component in your Docker infrastructure.
    There is a newer overlay driver "overlay2" which is required for the overlay file-system used by your container to run properly.

    Here is the official requirement on the Docker side

     https://docs.docker.com/storage/storagedriver/overlayfs-driver/


    But before you can start to change your overlay driver, your file-system needs to support d_type / ftype=1.

    When your file-system is not formatted in the right way, you will see the following warning message:

    WARNING: overlay: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior.

            Reformat the filesystem with ftype=1 to enable d_type support.

            Running without d_type support will not be supported in future releases



    You can check if you already have ftype=1 check the following:

    xfs_info /dev/sdb | grep ftype


    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1


    If this doesn't return anything you have to reformat the file-system with the right options.
    The easiest and most convenient way is to create new disk and format it in the right way.
    A best practice is to use this file-system for /var/lib/docker.

    Create a new disk for /var/lib/docker

    To create a new file-system on an additional disk you can use the following command.

    mkfs -t xfs -n ftype=1 /dev/sdb


    Afterwards you can mount the disk via fsstat. Before you mount it you should move the existing data to a different location and and move it back to the new file-system afterwards.

    vi /etc/fsstab
    dev/sdb         /var/lib/docker   xfs     defaults    1 1


    Changing the overlay driver

    Now that you ensured the disk has the right configuration you can change the overlay driver.

    You have to create a new configuration file and add the following configuration.

    vi /etc/docker/daemon.json


    {
     "storage-driver": "overlay2",
     "storage-opts": [
       "overlay2.override_kernel_check=true"
     ]
    }


    Requirements for NSD

    When looking into NSD inside the Docker container you first have to ensure that you have the right packages install.

    You will need the the GNU Debugger (gdb) and also the lsof tools to show open files and handles.

    yum install lsof gdb


    But this isn't all you need. There are missing permissions when your run NSD/GDB inside Docker.

    You have to start it with the following additional settings:

     docker run -p 1352:1352 -p 80:80 -p 443:443 --name docker-name --cap-add=SYS_PTRACE -v notesdata:/local/notesdata -v /etc/localtime:/etc/localtime:ro ibmcom/domino:10.0.0



    Conclusion and Result

    After this change all my file move and remove operations did work!
    The older overlay driver is not really supported any more but it is still the default driver at least in my installation.

    It's not just the driver! The driver depends on features in the XFS.
    You can query the overlay driver type via:

    docker inspect --format '{{ .Driver }}' container_name

    This will show if you have the right overlay2 driver.

    There have been some very odd issues when running NSD if you don't have the overlay2 driver.
    And also without GDB an LSOF is really required. And last but not  least you need to provide the right permissions to have GDB attach to your running processes.


    Comments
    No Comments Found

    Links

      Archives


      • [HCL Domino]
      • [Domino on Linux]
      • [Nash!Com]
      • [Daniel Nashed]