“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:27017
with 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