Thursday 2 July 2020

HCL Domino 11 on Docker

The main goal of this document is to show HCL Domino 11 installation on Docker for test purposes, including Docker installation and Linux configuration.
Operating system: redhat-release-server-7.7-10.el7.x86_64
Kernel: 3.10.0-1062.el7.x86_64
CPU: 2 Core
Memory: 4 Gbyte
Disc: 20 Gbyte
Host: d11docker.andras.demo
IP: 192.168.0.126
User: root
Important: If you see this “” (one long), please replace it with “--" (two short)

Preparations

Internet access is required. Without it you have to download and copy all required packages manually.

RHEL7 Keymap

Because I use Hungarian keyboard, I change keymap to Hungarian. *Comment: You can list available keymaps: localectl list-keymaps
localectl set-keymap hu

RHEL7 Firewall

Required ports to setup and access HCL Domino server:
·         80        HTTP
·         443     HTTPS
·         1352   HCL Notes client
·         8585   HCL Domino Server Remote Setup         *This is the only way at the moment to setup Domino server on Docker.
On my RHEL7 server 80, 443 and 1352 port are part of basic settings. I add 8585.
vim /etc/services
Check and modify as required
http                 80/tcp             #WorldWideWeb HTTP
http                 80/udp            #HyperTextTransferProtocol
https               443/tcp           #WorldWideWeb HTTPS over TLS/SSL
https               443/udp         #HyperTextTransferProtocol over TLS/SSL
lotusnote       1352/tcp         #Lotus Notes or HCL Notes
lotusnote       1352/udp       #Lotus Notes or HCL Notes
lotusnote       8585/tcp         #Lotus Domino or HCL Domino Remote Setup
lotusnote       8585/udp       #Lotus Domino or HCL Domino Remote Setup

Save and close file
Because I added only 8585, I need only these commands below:
firewall-cmd –zone=public –add-port=8585/tcp –permanent
firewall-cmd –zone=public –add-port=8585/udp –permanent
firewall-cmd --reload

RHEL7 hosts file

Because I do not use DHCP/DNS servers I add fully qualified host name and IP to hosts file. *Comment: I must add fully qualified host name and IP to host file on my test client, too.
vim /etc/hosts
192.168.0.126           d11docker.andras.demo     d11docker
*Comment: If you use DNS/DHCP you do not need this configuration.
*Comment: Change it as you want. This is a demo environment.
Save and close. Test it with ping.
ping d11docker.andras.demo
*Comment: Do not continue if it does not work with the fully qualified host name and correct IP address!

RHEL7 limits

HCL Domino server requires changes in limits.conf to run properly. Because I use root user I will change it for root.
vim /etc/security/limits.conf
root     hard    nofile  65535
root     soft      nofile  65535

Save and close the file.
I create folder for installation and other packages.
mkdir -p /opt/install

RHEL7 .bash_profile

I change history settings. It is very useful for learning but it is not mandatory.
cd $HOME
vim ./.bash_profile
HISTFILESIZE=10000
HISTSIZE=1000
HISTCONTROL=ignorespace:ignoredumps
export HISTFILESIZE
export HISTSIZE
export HISTCONTROL

Save and close the file.

Docker repo

yum clean all
yum repolist enabled

Required container package

cd /opt/install
yum -y install container-selinux-2.119.1-1c57a6f9.el7.noarch.rpm

RHEL7 aliases

I create some useful aliases, but they are not mandatory.
cd $HOME
vim ./.bash_profile
alias dockerstart=’systemctl start docker’
alias dockerstop=’systemctl stop docker’
alias dockerstatus=’systemctl status docker’
Save and close the file.
source ./.bash_profile

Docker installation

yum -y install docker-ce docker-ce-cli containerd.io
For the first time use
systemctl start docker
systemctl status docker
systemctl stop docker
In the future you can use aliases.
Do not continue if Docker is not Active!
“Active: active (running) since …….”
docker info    *Comment: Docker must run. ‘docker info’ command gives you information about running Docker environment.

The environment is ready to install HCL Domino 11 for Docker.



HCL Domino 11 for Docker installation


Required package: Domino_1101_DockerImage.tgz
Create Docker volume for Domino 11      *Comment: This is a local data store only for test purposes.
docker volume create notesdata
docker volume list
docker volume list
docker volume inspect notesdata
*Comment: you can see the “Mountpoint” for this volume. This is independent from the Domino server container, so you can recreate, update, upgrade container anytime without loosing Domino data and configuration.
“Mountpoint”: “/var/lib/docker/volumes/notesdata/_data”
Create local Domino 11 image repository
docker load –input /opt/install/Domino_1101_DockerImage.tgz
Check image availability
docker image ls -a
My results
REPOSITORY: domino-docker
TAG: V1101_03212020prod
IMAGE ID: 2854f040d034
CREATED: 2 months ago
SIZE: 1.37 GB

Domino server setup

At the end of this process the container will be removed automatically. It is normal.
docker run --rm -e JAVA_OPTS=’-Xmx1500m -Xms1500m’ --name domino-docker -v notesdata:/local/notesdata --hostname d11docker.andras.demo -p 8585:8585 -p 1352:1352 -p 80:80 -p 443:443 domino-docker:V1101_03212020prod --setup
*Comments:
notesdata:/local/notesdata             *Do not change this
-p 8585:8585 -p 1352:1352 -p 80:80 -p 443:443            *end users connect to host operating system on the port on the left side and Docker connects them to Domino server on the ports on the right side. Standard ports for Domino server communication
domino-docker:V1101_03212020prod                 *You can check version with command docker image ls -a                You need TAG.
-e JAVA_OPTS=’-Xmx1500m -Xms1500m’        *If you forget this part, setup will fail at the beginning.

Now you need your test client with HCL Notes client including HCL Remote Server Setup. First of all, test connections to Domino server setup from your test client with telnet.
I use Windows 10 cmd
ping d11docker.andras.demo        *Comment: Do not continue if it does not work!
telnet -e Q d11docker.andras.demo 8585           *Comment: Do not continue if it does not work!
Start HCL Domino Remote Server Setup and configure your Domino server.

Run the first Domino server start command if everything was all right.
docker run -it --name domino-docker -v notesdata:/local/notesdata –hostname d11docker.andras.demo --cap-add=SYS_PTRACE -p 80:80 -p 443:443 -p 1352:1352 domino-docker:V1101_03212020prod
Now you must see Domino server console.
Open another terminal window
docker container list
You can see information about Domino 11 container. You can see that /local/start.sh inside the container starts Domino environment. If you want to see the content of /local/start.sh run command docker container exec -it cat /local/start.sh
Now you can stop Domino server on Domino Console: quit
To get CONTAINER ID run
Docker container ls -a
Save CONTAINER ID !!     My ID is “eef2ea62a40a”
You stop and start the container by command
Docker container stop eef2ea62a40a
Docker container start eef2ea62a40a      -           *Comment: This command starts the container including Domino server without Domino server console. Use Domino Administrator client to manage server.
Remember!
docker volume inspect notesdata
cd /var/lib/docker/volumes/notesdata/_data        *Comment: path is based on inspect result
You can see all databases, ids and ini files.


Useful links

I used these wikis, knowledge bases to build and configure this test environment.
Domino on Docker

Deploying a new Domino server on Docker

Docker installation for HCL Domino server on Linux

Docker general commands

Domino on Docker requirements

Deploying on Docker

Procedure


·         Loading the domino-docker tar archive file to Docker
The first step to deploy a new Domino server on Docker is loading the domino-docker tar archive file to Docker. This creates the image that's used to create containers.
·         Creating the volume to store the data directory
After you load the domino-docker tar archive to Docker, create a Docker volume. The Docker volume is a persistent location to hold the Domino data directory
·         Creating a temporary container for remote server setup
To deploy a new Domino server as a Docker container, first create a temporary container to complete remote Domino server setup.
·         Creating a container for Domino
After you have set up a new Domino server using a temporary container, create the container to run the Domino server.

No comments: