This article requires that Docker already be installed and configured on the host. Consult Docker's official documentation for assistance with installation.
Supported Operating Systems
Exago currently can be installed in Docker images with the following operating systems:
Review Exago's Technical Specifications article for supported versions of Linux with Exago. Other distributions may be used, contact Exago Support for assistance. Exago does not recommend using Windows in Docker containers.
Best Practices and Recommendations
As each use case is different, there are several variables that contribute to decisions in the deployment of Exago in Docker containers. However, at a minimum:
- System administrators should carefully analyze their Docker resource constraints, and consider limiting access to memory and CPU time. As a best practice, do not allow Docker containers to consume all memory or CPU time on the host. System requirements for a Docker container are similar to those of a Linux virtual machine, therefore the Docker host should be setup with similar specifications. Review Considerations When Sizing an Exago System.
- Use Docker volumes to persist data such as configuration files, temp files, logs, application settings and scheduled jobs. This way, critical files are available to all containers or between container starts and stops. In some situations, such as when the Docker host is based in the cloud, volumes may not be an available option. Review the File Storage section of the Installing Exago on Azure article and the Amazon S3 File Storage article for cloud storage solutions in this case.
- Consider implementing the Scheduler Queue. The Scheduler Queue moves the Scheduler Service's job files off of the container to the queue's database. In addition, the Scheduler Queue's design to work with services that go on and offline fits more closely with Docker's deployment paradigm than isolated Scheduler Services.
- Consider the recommendations of the High Availability article
- Review and implement the Security Checklist
A general procedure for installing Exago on Docker is as follows:
- Download the Exago Linux Installer
- Optional: Create an Exago configuration file that the image file created in step 5 will use
- Optional: Create Docker volumes for persistent storage of temp files, config files, etc...
- Write a Dockerfile to create a Docker image of the Exago installation
- Build the image and launch containers
1. Download the Exago Linux Installer
From the Exago Downloads Page, download the latest version of the Exago Linux Installer. Be sure to review the Updating to the Latest Version and Updating Recommendations articles for important information.
2. Create an Exago Configuration File
This step is optional. With the Admin Console of an existing Exago installation on the same operating system and Exago version, a file can be created with a familiar graphical user interface. Copying this configuration file into the image can be automated, so once the container is launched the system is up and running.
Scheduler Service configuration files can also be prepared ahead of time, then copied into the image.
3. Create Docker volumes for persistent storage
This step is optional. Depending on implementation, it may be desirable to persist storage of temporary files, configuration files, Storage Management databases or others.
For example, a cluster of Docker containers working in a web farm arrangement will need to share temporary files, even if some of the containers go offline. Additional containers will require access to the same share as they are brought up.
4. Write a Dockerfile
Consult Docker's documentation and Exago Support for full details. Since every deployment is unique, one approach may be:
- Begin with an operating system (e.g.
- Install a web server with the OS package manager
- Download or copy the Linux installer to the image
- Install Exago with mono from the command line
- Copy the Exago configuration file created in step 2 to the image
- Set permissions on directories
- Set Applications Settings if required
- Start the web server
5. Build the Image from the Dockerfile
docker build on the command line.
Once built, launch Docker containers from the new image as necessary.