Database Docker images – now beta via Software Collections
“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
||MySQL 5.6 SQL database server|
||MariaDB 10.0 SQL database server|
||PostgreSQL 9.4 SQL database server|
||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
# 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.
||User name for MONGODB account to be created|
||Password for the user account|
||Password for the admin user|
We want to start the database to be accessible from the host computer, so we have to specify
This command starts MongoDB server on the
localhost:27017with enabled authentication and two users:
# 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!
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 (
Also we can override some default configurations by specifying some of these environment variables (similar to how we specified details about database users):
||Disable data file preallocation||
||Set MongoDB to use a smaller default data file size||
||Runs MongoDB in a quiet mode that attempts to limit the amount of output||
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
To learn more, visit our Join the Red Hat Developer Program (it’s free) and get access to related cheat sheets (e.g. containers), books (e.g. microservices), and product downloads that can help you with your microservices and/or container application development.