Skill Level: Beginner

Basic knowledge on Docker and MDM would be helpful for the reader.

The article elaborates on how to bring up containerized MDM in versions 11.6 FP9 and FP10 and perform operations within the container


MDM uses Docker for containerization.  MDM images corresponding to applications and database are available in extracted and deployed formats as Docker images.  MDM user interfaces, client applications, Stewardship Center and Machine Learning are also available as docker images.  Docker containers can be created using these images.  Docker Compose is used when multiple containers are involved in an application.  Most MDM applications are multi-container applications and hence we use docker-compose.

Install docker and docker-compose

Details on installing Docker CE and Docker Compose are available at https://docs.docker.com/install/  and https://docs.docker.com/compose/install/


Download docker-compose yml files from IBM Passport Advantage

The docker-compose yml files are available in compressed format in IBM Passport Advantage.   Details on the files to download are available at this link at the IBM MDM Knowledge Center.

The docker images are downloaded from Bluemix repository when the docker-compose yml files are executed through script Configure_MDM_Docker




  1. Containerized MDM

    Containerized MDM provides us a number of advantages including cost and resource saving.  When deployed on container orchestration platforms, we can leverage high availability, auto scaling and auto healing and security as well.

    In this sample we bring up deployed MDM v11.6.0.9.  Deployed MDM has 4 containers – MDM operational server deployed on WAS Base v, MDM database on DB2 v11.4, MDM Client applications which has client applications including Batch Processor, Kafka server and Jetty Server, and MDM UI container that has the MDM user interfaces.

    A docker container should have the application and all its dependencies to function.  The container for MDM operational server has the WAS Base, a WAS Base Profile with MDM deployed on it and the database libraries required to connect to DB2.

  2. Extract the zip file containing docker-compose files

    The compressed file downloaded from Passport Advantage (mentioned in the Pre-requisites) has the docker-compose.yml files and a script to execute them.   Extract the compressed file to a folder in your box.  Linux and Ubuntu based operating systems are supported.


  3. Invoke script Configure_MDM_Docker

    The Configure_MDM_Docker will be available along with the extracted yml files.  Execute this file, accept the Licence, and bring up the docker containers corresponding to your requirement.  

    1. Execute the Configure_MDM_Docker by invoking


    at the directory in which the docker-compose yaml files are present.  A User Interface comes up.

    2. Click Continue at the License Agreement, for the system to display the License


    3. Select the language in which the license has to be displayed and click OK


    4. Click OK after reading the License.

    5. Select Cancel at the Language selection that is displayed.

    6. Select Accept at the License Agreement.


    7. The list of MDM docker-compose applications are displayed.  Provide the option with which you want to proceed.  In this example, the value 8 was provided as input here.


    8. A docker network and volumes will be created, docker images will be downloaded as required and the docker containers will be created and started.  Please notice that the docker-compose yaml used is displayed during the execution.


  4. Logging into the MDM docker container

    The docker containers can be listed using 

    docker container ls

    You can login to a docker container, for example mdm-container using

    docker exec -it mdm_container bash

    You can execute commands within the container similar to how it can be done in a physical machine.

    The ports in the docker container are mapped to ports on the host machine in which the containers are deployed.  So, it is possible to access the WAS Admin Console at https://<MACHINE_NAME>:9043/ibm/console   User Interfaces can be also be accessed from the host machine using port 39043.  For example: https://<MACHINE_NAME>:39443/inspector  Please use port 443 to access the MDM AE SE User Interface.  Please check the container ports and the corresponding host machine ports in the docker-compose.yml file.  They are available under each service in the ports section in format <HOST_MACHINE_PORT>:<CONTAINER_PORT>

    In the MDM Container (mdm_container), MDM is installed at /opt/IBM/MDM and the WAS Base Profile is available at /opt/IBM/WebSphere/AppServer/profiles/AppSrv01.  The username and password for the WAS Admin User and MDM Admin User are mdmadmin/mdmadmin


    In the DB2 Container (db2_container) switch to user db2inst1 (password: db2inst1) and connect to database MDMDB and perform required database related operations.  The database schema used is DB2INST1


    Note: The database is SSL enabled and the certificate has been added to the WAS NodeDefaultTrustStore (/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/WASHOSTCell01/nodes/WASHOSTNode01/trust.p12) which has the default password WebAS


    A sample IVT invocation is displayed here:


  5. Bringing down docker containers

    You can bring down all containers that were brought up using a docker-compose.yml file using

    docker-compose down -f <FILE_NAME> down -v

    This will remove the docker containers, volumes and network created by the docker-compose file mentioned.


    A container can be brought down using

    docker stop <CONTAINER_NAME>

    docker rm <CONTAINER_NAME>


    Volumes and networks that are not used can be removed using

    docker volume prune

    docker network prune

  6. Explore the docker-compose yaml used

    Let us have an overview on the mdm-deployed.yml file used to bring up the above containers.  This file contains details on four services, namely the MDM Database with tables and gold data in it and a WAS Base Profile that has MDM Applications deployed in it, Client Apps container holding client applications including Batch Processor, Kafka Processor, Elastic Server, Jetty Server and Samples and the MDM User Interfaces container that has the MDM User Interfaces including Business Administration UI, Inspector, Web Reports, Enterprise Viewer and MDM AE SE User Interface.

    For each service details including docker image name, port mapping between host and container, container name, host name, environment variables, networks, aliases and volumes are provided. 

    The MDM database image has the value of flag privileged set to true as it is required to start the DB2 service. 

    The MDM Applications container mentions that it is dependent on the container that has the MDM database.  It uses the hostname DB2HOST to access the MDM database container.

    The ClientApps container has the hostname CLIENTAPPSHOST and exposes ports used by the client applications at the host machine.

    The MDM User Interface Application with hostname WEBHOST exposes a different set of ports from the MDM operational server.

    The containers become part of the network by name mdmnetwork.  Each container is assigned a static IP address.

    Volumes are used to save the data from the container to the host.  It is also used to share certain key files between containers (Example: volume db2).  When docker-compose up is invoked, you will be able to see the volumes being created.  You can then check the directory /var/lib/docker/volumes in the host to check the volumes created and then go through the contents in each volume.

1 comment on"Explore containerized MDM v11.6.0.10 using docker and docker-compose"

  1. DigvijayShanker December 17, 2019

    Thanks Chitra. Can you please post detailed steps for MDM deployment on Kubernetes or Openshift environment. Can we build MDM on AKS (Azure Kubernetes Service) or Amazon EKS (Elastic kubernetes service) or GKE(Google Kubernetes Engine).
    Second question is if i want to build MDM software on Kubernetes/Openshift, does DB2 can also be built on Kubernetes or it should be on-premise (traditionally DB2 is installed on Physical or virtual machine)

Join The Discussion