A Practical Introduction to Docker Container Terminology

“As a part of the Red Hat Software Collections offering, Red Hat provides a number of container images, which are based on the corresponding Software Collections. These include application, daemon, and database images. The provided images, currently available in the Beta version” (for more information see https://access.redhat.com/articles/1752723)

Red Hat Software Collections allows you to run newer versions of software on a stable Red Hat Enterprise Linux. These new images combine this feature with the benefits of containers.

In this post I would like to show you how to run database server from RHSCL in one command.

RHSCL 2.0 contain these database container images

Database Images
rhscl_beta/mysql-56-rhel7 MySQL 5.6 SQL database server
rhscl_beta/mariadb-100-rhel7 MariaDB 10.0 SQL database server
rhscl_beta/postgresql-94-rhel7 PostgreSQL 9.4 SQL database server
rhscl_beta/mongodb-26-rhel7 MongoDB 2.6 NoSQL database server

 

The images are available for Red Hat Enterprise Linux 7 through the Red Hat Container Registry.

The basic usage of database container images is very similar. For differences see the documentation - https://access.redhat.com/articles/1752723 .

How to run database server

So lets for example use MongoDB database.

To pull the rhscl_beta/mongodb-26-rhel7 image, run the following command as root:

# docker pull registry.access.redhat.com/rhscl_beta/mongodb-26-rhel7

(Download of the image is performed automatically when you try to run it with docker for the first time. So it is not necessary to run the command above separately.)

Images are designed to make running of the database as easy as possible. So the database has sane default configuration and a new database will be created with two database users during start. So, when running the image, the user has to specify more information about these database users.

The image recognizes the following mandatory environment variables that you have to set during initialization by passing -e VAR=VALUE to the docker run command.

Variable name Description
MONGODB_USER User name for MONGODB account to be created
MONGODB_PASSWORD Password for the user account
MONGODB_DATABASE Database name
MONGODB_ADMIN_PASSWORD Password for the admin user

 

We want to start the database to be accessible from the host computer, so we have to specify -p 27017:27017.

This command starts MongoDB server on the localhost:27017with enabled authentication and two users:

User Password Database
admin adminsecretpassword admin
dbuser secretpassword developerblog

 

# docker run -d -e MONGODB_USER=dbuser -e MONGODB_PASSWORD=secretpassword -e MONGODB_DATABASE=developerblog -e MONGODB_ADMIN_PASSWORD=adminsecretpassword -p 27017:27017 rhscl_beta/mongodb-26-rhel7

That is all, now we have running MongoDB server on host machine!

Customization

There are also some options to customize the images. First, we can specify a mount point. This is a directory on the host where the database will be stored. So if we want to store the database into directory we have to add option -v /home/user/database:/var/lib/mongodb/data to the docker run command.
To avoid problems with SELinux, add :Z at the end of this parameter (-v /home/user/database:/var/lib/mongodb/data:Z).

Also we can override some default configurations by specifying some of these environment variables (similar to how we specified details about database users):

Variable Name Description Default
MONGODB_NOPREALLOC Disable data file preallocation true
MONGODB_SMALLFILES Set MongoDB to use a smaller default data file size true
MONGODB_QUIET Runs MongoDB in a quiet mode that attempts to limit the amount of output true

 

So our final command could be this:

# docker run -d -e MONGODB_USER=dbuser -e MONGODB_PASSWORD=secretpassword -e MONGODB_DATABASE=developerblog -e MONGODB_ADMIN_PASSWORD=adminsecretpassword -p 27017:27017 -e MONGODB_QUIET=false -v /home/user/database:/var/lib/mongodb/data:Z rhscl_beta/mongodb-26-rhel7
Last updated: November 1, 2023