Domino container control (dominoctl)

dominoctl provides commands and operations for Domino on Docker and Podman. For running a single Domino instance on a Docker or Podman host, this script is one-stop shopping for all operations. From start/stop to configuration and the life time of the container all all szenarios are covered. Most of the standard commands are very similar to the Domino start script. The container control script works hand in hand with the Domino start script, which is running inside the container.

Install dominoctl

Switch to the start-script directory and run the install script.

./install_dominoctl

Quick configuration

  • To get your server up and running, ensure you have a container image defined and available on your machine.
  • When running on Docker make sure the Docker service is running.

Edit the configuration of your container by invoking the cfg command:

Edit your container configuration and ensure at least the following settings are specified:

  • CONTAINER_IMAGE
  • CONTAINER_NAME
  • CONTAINER_VOLUMES

See full list of all configurations options below.

dominoctl cfg

Start your container

Finally start your container. For the first start will run a new container. If the container is already present, the container is started.

dominoctl start

Podman support

dominoctl automatically detects Docker and Podman run-time environments to use the right commands. In contrast to Docker, Podman is daemon-less and needs a separate service to start. The project comes with a systemd script, which is automatically installed and leveraged by dominoctl.

Configure your server using a OneTouch setup template for the first server or an additional server

dominoctl setup

Run your container

dominoctl run

Command reference

Start/stop

start

Start an existing container (the ‘live’ option shows start script output)

stop

Stop container (the ‘live’ option Show start script output)

restart

Restart or start the server

Status/info commands

status

Show container status (running, exited, notexisting)

statusd

Show the systemd status

about|about+

Show machine info. With ‘About’ or ‘about+’ also show info from https://ipinfo.io/

info

Show status and basic information about container and image

inspect

Show detailed information about container and image

port

Show used tcp/ip ports for container

Container operations

console

Open Domino console inside the container

logs

Show container logs (output from entry point script/start script)

attach

Attach to entrypoint script

domino

Pass a command to the start script (e.g. domino nsd)

bash [root]

Invoke a bash in the running container. optionally run as root instead of notes user

remove|rm

Remove the container (if not running)

removeimage|rmi

Remove the currently configured image (you have to remove the container first)

Container configuration

config|cfg

Edit configuration

setup

Create JSON configuration for container auto configuraiton

update

Update the container if referenced image has changed (stops Domino, stops the container, runs a new image)

Container commands

pull

Pull current image (e.g for update)

install

Install Podman

load

Load HCL Domino Docker image

build

Build a current image – even image tags might not have changed to ensure OS patches are installed

restartpolicy

Update restart policy for existing container (e.g. : no | on-failure | always | unless-stopped)

enable|on

Enable systemd service for Podman

disable|off

Disable systemd service for Podman

clean

Cleanup container and systemd if configured

env

Edit environment file

version

Show script version information

Configuration settings

CONTAINER_NAME

Defines the name of the container.
The container name is used to reference the container by name instead of using the container ID.

CONTAINER_NAME=domino

CONTAINER_IMAGE

Container image used by the container.
By default, the build script used the name hclcom/domino:latest

CONTAINER_IMAGE=hclcom/domino:latest

CONTAINER_HOSTNAME

Defines the container hostname. If not set, the machine’s hostname is used by default.

CONTAINER_HOSTNAME=domino.acme.loc

DOMINO_SHUTDOWN_TIMEOUT

By default, the Docker kills the container processes after 10 seconds.
Domino requires a longer shutdown interval than 10 seconds. If not specified the container timeout is set to 120 seconds by the script.

DOMINO_SHUTDOWN_TIMEOUT=180

CONTAINER_NETWORK_NAME

This variable defines the container hostname.
Using the host network is the best choice for a single Domino container running in a container.
In this case, you don’t need to expose individual ports.
But this will make all ports inside the container available on the Linux host.

In addition, if the firewall is running, you have to open ports individually.
On the other side, the host network doesn’t use network address translation.
The host network configuration allows seeing external IP addresses 1:1 inside the container.
This is important for IP address logging.

CONTAINER_NETWORK_NAME=host

CONTAINER_PORTS

If not specifying the host network, ports need to be exported explicitly.
Ports you export from your container are automatically added to your host firewall, which makes them available externally.

Example for container network

CONTAINER_PORTS="-p 1352:1352 -p 80:80 -p 443:443"

CONTAINER_VOLUMES

Volumes store persistent data for containers.
The volume definition is used to map physical volumes or container volumes.

Container volume

CONTAINER_VOLUMES="-v local-domino:/local"

Physical volumes

CONTAINER_VOLUMES="-v /local/notesdata:/local/notesdata -v /local/translog:/local/translog -v /local/daos:/local/daos "

CONTAINER_ENV_FILE

An environment file is used for the first container start (run) to pass setup parameters.
The new configuration uses a JSON OneTouch automation setup. Just run domino_container setup.

Examples:

CONTAINER_ENV_FILE=env_container
CONTAINER_ENV_FILE=env_container_domino12

CONTAINER_RESTART_POLICY

By default, the Docker daemon does not start containers automatically.
The Docker Restart policy defines if and when containers are started or restarted.
This option allows setting the restart policy.

CONTAINER_RESTART_POLICY=unless-stopped
CONTAINER_RESTART_POLICY=on-failure:3

BORG_BACKUP

The Domino Community container supports a Borg Backup using an optional build option.
For Domino V12 Borg Backup restore support the FUSE device is required.
This option enables the FUSE device when running the container.

BORG_BACKUP=yes

EDIT_COMMAND

By default vi is used for all edit operations.
The configuration option allows switching to a different editor.

EDIT_COMMAND=nano

Docker Compose Support

dominoctl is a very flexible tool to run your Domino containers on Dock and Podman. In some scenarios for lab environments using docker-compose with multiple containers are helpful. To enable Docker compose support, add a docker-compose.yml to the configuration directory.

Multiple Domino Container Support

By default, the configuration is located in /etc/sysconfig. In addition, two additional configuration locations can be used:

  • Home Directory
  • Current work directory

Run Docker with a non-privileged user

dominoctl runs with any user. Podman is daemon-less and allows to run with any user by default. Podman even separates containers and images between users. For Docker the user needs to be added to the docker group to allow running Docker commands.

.dominoctl Directory

The directory name for configurations is .dominoctl This directory is either located in your home directory or the local work directory.

Search Order

  • Current directory
  • Home Directory
  • /etc/sysconfig

Configuration Files

The directory can contain the following files:

  • domino_container
    configuration file (required)

  • docker-compose.yml
    Docker compose file. If this file is present, Docker compose is used

  • .env
    Environment file specifying environment variables for Docker container.

Initialize a Configuration

  • .dominoctl home
    writes a new configuration into the current user’s home directory

  • .dominoctl local
    writes a new configuration into the current directory

Additional Init Options

  • env
    writes an empty .env file

  • compose
    copies a default docker-compose.yml