This Domino Docker script is intended to simplify your Domino on Docker environment. It can be used build, run and maintain your Domino on Docker environment.
The "dockerscript" is also a good example how to derive your own image from the standard image. It comes with a flexible configuration and provides and easy interface for container/image related Docker commands. This is the logical extension of the Domino start script and works hand in hand with the Domino start script.
It is also a good example how to interact with Docker when you don't have a Docker management solution in place. You can use the script as a reference also how to query information from the images and containers.
The inspect/info command queries a lot of information from the running Domino servers.
This management script can be used to create custom images and to run them.
For each container there are two files that belong together. One containing the configuration and variables, and one for the script itself:
- management script : "docker_"
- configuration file : "config_"
Both file names will refer to each other using the custom string right of "_".
- "docker_123" will use the configuration from "config_123"
- "docker_paul" will use the configuration from "config_paul"
You just need to build the image and run the container. It will be derived from the image. The default configuration should work for first tests. But you should check the configuration and change the naming accordingly (the default configuration contains "Acme").
To ensure you are deriving from the right Domino Docker image, you have to check the "dockerscript" for the "FROM" statement. This is usually set to something like "FROM ibmcom/domino:latest". There are multiple example files for different targets like Domino, Domino CE or Traveler.
Afterwards build and run the image.
docker_domino build docker_domino run
Currently there are a couple of additional files for testing and demonstration purposes. This abstract describes the main components of the Domino Docker script.
This is the main script logic and the central entry point for all operations. For available commands see the "Commands" abstract.
The script contains a standard configuration which is used when no configuration file is present.
This file contains the configuration for the docker_domino script. The name has to match the last part of the docker_domino script. In case you want to run multiple instances you can clone the files and have multiple instances. For example docker_domino-ce, config_domino-ce. See more "Run multiple instances" section for details.
For configuration details check the next section.
This dockerfile is deriving from a Docker Domino image and allows customization. The main logic is performed by the install.sh which is executed from the dockerfile.
This directory contains scripts and files which are copied into the image during installation. There is a directory for server-tasks and extension-managers which will be automatically installed via install.sh.
The install.sh file contains the main logic used to install the image. The Docker script invokes this script for installation. This script can be customized for your own logic.
The following configuration is used to customize your Docker container. Most of the default configuration should work for you.
This parameter defines the name of the container. It is used in all commands and can be customized -- specially when you need multiple containers.
This parameter defines the name of the image that is generated (build) and used (run).
This parameter defines the image version. Example: 10.0.0
This parameter is used to configure the dockerfile which is used. The script comes with a ready to use sample dockerfile which you can modify for your needs.
This parameter can be used to configure the hostname for the container.
Stopping a Domino server usually takes longer than the standard shutdown timeout (10 seconds) which Docker waits on shutdown before killing the processes. This parameter is used with the docker stop command. The parameter is --time=timeout-value.
You can change the network to host network instead of using NAT. By default this parameter is disabled and NAT is used.
You can define which ports are exposed for your container. By default NRPC, HTTP and HTTPS are exposed.
Default: "-p 1352:1352 -p 80:80 -p 443:443"
For multiple instances on the same Docker host you have to bind the port to an dedicated IP by specifying an IP with the host.
Example: "-p 192.168.100.100:1352:1352 -p 192.168.100.100:80:80 -p 192.168.100.100:443:443"
You have to specify at least one static volume for your Docker container which will contain your data directory. On first run the /local/notesdata directory will be copied to the volume.
You can also add other volumes for example for translog and DAOS.
Default: "-v notesdata:/local/notesdata"
The following commands are currently available.
builds a current image -- even image tags might not have changed to ensure OS patches are installed
runs a container -- will initiate a container if not present ('live' shows start script output, alias 'runit')
start an existing container (the 'live' option shows start script output)
stops container (the 'live' option shows start script output)
shows container status (running, exited, notexisting)
shows information about container and image
shows container logs (output from entry point script/start script)
attach to entry point script which is running inside the Docker container.
pass a command to start script (e.g. domino nsd, domino console). "domino console" will launch the interactive Domino console (Domino Start Script).
invokes a bash in the running container
removes the container (if not running)
removes the current container (you have to remove the container first)
updates the container if referenced image has changed (stops Domino, stops the container, runs a new image)
shows script version information
Run multiple instances
When running multiple instances you have to define separate docker_domino and configuration files. In addition you have specify different container names in each of the configuration files. You also have to specify a separate IP addresses per container and separate volumes! Having multiple containers per hosts adds complexity to your environment. The script allows this deployment scenario. But it's recommended to use a Docker management/deployment solution.