Public Repository

Last pushed: a year ago
Short Description
iRods Docker Image based on the officially released image
Full Description


The docker iRods Image is an easy distributable, core iRods deployment. It can be used for testing, teaching and production.

This image runs a self-contained iRods server and postgresql database.


The following options can be set as environmental values on startup:

param default synopsis
UID rods iRods system user id
GID rods iRods system group id
ZONE tempZone iRods zone name
SERVICE_PORT 1247 main connection port
PARALLEL_PORT_START 20000 connection port range for parallel transfers (start)
PARALLEL_PORT_END 20199 connection port range for parallel transfers (end)
VAULT_PATH /var/lib/irods/Vault default directory where data will be stored
ZONE_KEY TEMPORARY_zone_key zone authentication key, used for communication between zones, can be up to 49 alphanumeric characters long and cannot include a hyphen
NEGOTIATION_KEY TEMPORARY_32byte_negotiation_key zone negotiation key, must be exactly 32 alphanumeric bytes long, and the same across zones
CONTROL_PLANE_PORT 1248 iRods control plane port
CONTROL_PLANE_KEY TEMPORARY__32byte_ctrl_plane_key control plane authentication key
VALIDATION_URI template for database scheme
IRODS_ADMIN rods iRods admin user
IRODS_PSWD rodspswd iRods admin password
LOCALDB true use a local (in-docker) postgresql database (true/false)
DB_HOST database host (FQDN)
DB_PORT 5432 database port
DB_NAME ICAT database name
DB_USR irods database user
DB_PSWD rodspswd database user password


Build image

cd docker-irods && \
docker build -t cmgg/irods:4.1.9 --rm .

Run image

To run this docker image, simply do

docker run -d -p 1247:1247 cmgg/irods:4.1.9

This will create an empty iRods repository, which connects to the internal database. Without further configuration, all data will be stored inside the docker image in $VAULT_PATH.
Please note that ALL DATA in this setup is NON PERSISTENT. This means that once the image is removed, all data and database will be lost.

If all default parameters are used, all files will be stored in /export/Vault.
To mount the /export directory, start the image with

docker run -d -p 1247:1247 -v /your/irods/data/dir/:/export cmgg/irods:4.1.9

Configuring the image for production

Set up an external database.

set up and configure an external database for your iRods instance. You can do this by executing:

sudo apt-get install -y postgresql
sudo -u postgres createdb -O postgres 'ICAT' && \
sudo -u postgres psql -U postgres -d postgres -c "CREATE USER $DB_USR WITH PASSWORD '$DB_PSWD'" && \
sudo -u postgres psql -U postgres -d postgres -c "GRANT ALL PRIVILEGES ON DATABASE \"ICAT\" TO $DB_USR"

Configure iRods

To configure this image for production use first start the iRods image with the correct parameters if they are different from the default values

docker run -d -p 1247:1247 \
-e ZONE=yourZoneName \
-e LOCALDB=false \
-e DB_PORT=5432 \
-e DB_USR=irods \
-e DB_PSWD=rodspswd \

More configurable parameters are listed above

Next, install the icommands suite from and connect to your iRods instance using the iinit command.
Your iRods instance is now fully configurable using icommands. Add extra resources and you're good to go. For more information on configuring iRods, go to

Typically, an iRods instance gets started with the command above, after which production ready storage should be added. This can be done by mounting a volume to the docker image in an arbitrary folder and add this folder as a resource. Alternatively, storage can be added through an Amazon S3 gateway, or other options. For more info, see

NOTE: This image does NOT support linked containers.

Docker Pull Command