Merge "docker.userguide: Fix instruction for installing ansible"
[barometer.git] / docs / release / userguide / docker.userguide.rst
index b42230e..520a72b 100644 (file)
@@ -1,6 +1,7 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
 .. (c) <optionally add copywriters name>
+.. _barometer-docker-userguide:
 
 ===================================
 OPNFV Barometer Docker User Guide
@@ -28,8 +29,7 @@ For steps to build and run InfluxDB and Grafana images please see section `Build
 
 For steps to build and run VES and Kafka images please see section `Build and Run VES and Kafka Docker Images`_
 
-For overview of running VES application with Kafka please see the `VES Application User Guide
-<http://docs.opnfv.org/en/latest/submodules/barometer/docs/release/userguide/collectd.ves.userguide.html>`_
+For overview of running VES application with Kafka please see the :ref:`VES Application User Guide <barometer-ves-userguide>`
 
 Barometer Docker Images Description
 -----------------------------------
@@ -91,14 +91,318 @@ The Barometer project's VES application and Kafka docker images are based on a C
 docker image has a dependancy on `Zookeeper <https://zookeeper.apache.org/>`_. Kafka must be able to
 connect and register with an instance of Zookeeper that is either running on local or remote host.
 Kafka recieves and stores metrics recieved from Collectd. VES application pulls latest metrics from Kafka
-which it normalizes into VES format for sending to a VES collector. Please see details in `VES Application User Guide
-<http://docs.opnfv.org/en/latest/submodules/barometer/docs/release/userguide/collectd.ves.userguide.html>`_
+which it normalizes into VES format for sending to a VES collector. Please see details in 
+:ref:`VES Application User Guide <barometer-ves-userguide>`
+
+One Click Install with Ansible
+------------------------------
+
+Proxy for package manager on host
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. note::
+   This step has to be performed only if host is behind HTTP/HTTPS proxy
+
+Proxy URL have to be set in dedicated config file
+
+1. CentOS - /etc/yum.conf
+
+.. code:: bash
+
+    proxy=http://your.proxy.domain:1234
+
+2. Ubuntu - /etc/apt/apt.conf
+
+.. code:: bash
+
+    Acquire::http::Proxy "http://your.proxy.domain:1234"
+
+After update of config file, apt mirrors have to be updated via 'apt-get update'
+
+.. code:: bash
+
+    $ sudo apt-get update
+
+Proxy environment variables(for docker and pip)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. note::
+   This step has to be performed only if host is behind HTTP/HTTPS proxy
+
+Configuring proxy for packaging system is not enough, also some proxy
+environment variables have to be set in the system before ansible scripts
+can be started.
+Barometer configures docker proxy automatically via ansible task as a part
+of 'one click install' process - user only has to provide proxy URL using common
+shell environment variables and ansible will automatically configure proxies
+for docker(to be able to fetch barometer images). Another component used by
+ansible (e.g. pip is used for downloading python dependencies) will also benefit
+from setting proxy variables properly in the system.
+
+Proxy variables used by ansible One Click Install:
+   * http_proxy
+   * https_proxy
+   * ftp_proxy
+   * no_proxy
+
+Variables mentioned above have to be visible for superuser (because most
+actions involving ansible-barometer installation require root privileges).
+Proxy variables are commonly defined in '/etc/environment' file (but any other
+place is good as long as variables can be seen by commands using 'su').
+
+Sample proxy configuration in /etc/environment:
+
+.. code:: bash
+
+    http_proxy=http://your.proxy.domain:1234
+    https_proxy=http://your.proxy.domain:1234
+    ftp_proxy=http://your.proxy.domain:1234
+    no_proxy=localhost
+
+Install Ansible
+^^^^^^^^^^^^^^^
+.. note::
+   * sudo permissions or root access are required to install ansible.
+   * ansible version needs to be 2.4+, because usage of import/include statements
+
+The following steps have been verified with Ansible 2.6.3 on Ubuntu 16.04 and 18.04.
+To install Ansible 2.6.3 on Ubuntu:
+
+.. code:: bash
+
+    $ sudo apt-get install python
+    $ sudo apt-get install python-pip
+    $ sudo -H pip install 'ansible==2.6.3'
+
+The following steps have been verified with Ansible 2.6.3 on Centos 7.5.
+To install Ansible 2.6.3 on Centos:
+
+.. code:: bash
+
+    $ sudo yum install python
+    $ sudo yum install epel-release
+    $ sudo yum install python-pip
+    $ sudo -H pip install 'ansible==2.6.3'
+
+Clone barometer repo
+^^^^^^^^^^^^^^^^^^^^
+
+.. code:: bash
+
+    $ git clone https://gerrit.opnfv.org/gerrit/barometer
+    $ cd barometer/docker/ansible
+
+Edit inventory file
+^^^^^^^^^^^^^^^^^^^
+Edit inventory file and add hosts: $barometer_dir/docker/ansible/default.inv
+
+.. code:: bash
+
+    [collectd_hosts]
+    localhost
+
+    [collectd_hosts:vars]
+    install_mcelog=true
+    insert_ipmi_modules=true
+
+    [influxdb_hosts]
+    localhost
+
+    [grafana_hosts]
+    localhost
+
+    [prometheus_hosts]
+    #localhost
+
+    [kafka_hosts]
+    #localhost
+
+    [ves_hosts]
+    #localhost
+
+Change localhost to different hosts where neccessary.
+Hosts for influxdb and grafana are required only for collectd_service.yml.
+Hosts for kafka and ves are required only for collectd_ves.yml.
+
+To change host for kafka edit kafka_ip_addr in ./roles/config_files/vars/main.yml.
+
+Additional plugin dependencies
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+By default ansible will try to fulfill dependencies for mcelog and ipmi plugin.
+For mcelog plugin it installs mcelog daemon. For ipmi it tries to insert ipmi_devintf
+and ipmi_si kernel modules.
+This can be changed in inventory file with use of variables install_mcelog
+and insert_ipmi_modules, both variables are independent:
+
+.. code:: bash
+
+    [collectd_hosts:vars]
+    install_mcelog=false
+    insert_ipmi_modules=false
+
+.. note::
+   On Ubuntu 18.04 to use mcelog plugin the user has to install mcelog daemon
+   manually ahead of installing from ansible scripts as the deb package is not
+   available in official Ubuntu 18.04 repo. It means that setting install_mcelog
+   to true is ignored.
+
+Configure ssh keys
+^^^^^^^^^^^^^^^^^^
+
+Generate ssh keys if not present, otherwise move onto next step.
+
+.. code:: bash
+
+    $ sudo ssh-keygen
+
+Copy ssh key to all target hosts. It requires to provide root password.
+The example is for localhost.
+
+.. code:: bash
+
+    $ sudo -i
+    $ ssh-copy-id root@localhost
+
+Verify that key is added and password is not required to connect.
+
+.. code:: bash
+
+    $ sudo ssh root@localhost
+
+.. note::
+   Keys should be added to every target host and [localhost] is only used as an
+   example. For multinode installation keys need to be copied for each node:
+   [collectd_hostname], [influxdb_hostname] etc.
+
+Download and run Collectd+Influxdb+Grafana containers
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The One Click installation features easy and scalable deployment of Collectd,
+Influxdb and Grafana containers using Ansible playbook. The following steps goes
+through more details.
+
+.. code:: bash
+
+    $ sudo -H ansible-playbook -i default.inv collectd_service.yml
+
+Check the three containers are running, the output of docker ps should be similar to:
+
+.. code:: bash
+
+    $ sudo docker ps
+    CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS               NAMES
+    a033aeea180d        opnfv/barometer-grafana    "/run.sh"                9 days ago          Up 7 minutes                            bar-grafana
+    1bca2e4562ab        opnfv/barometer-influxdb   "/entrypoint.sh in..."   9 days ago          Up 7 minutes                            bar-influxdb
+    daeeb68ad1d5        opnfv/barometer-collectd   "/run_collectd.sh ..."   9 days ago          Up 7 minutes                            bar-collectd
+
+To make some changes when a container is running run:
+
+.. code:: bash
+
+    $ sudo docker exec -ti <CONTAINER ID> /bin/bash
+
+Connect to <host_ip>:3000 with a browser and log into Grafana: admin/admin.
+For short introduction please see the:
+`Grafana guide <http://docs.grafana.org/guides/getting_started/>`_.
+
+The collectd configuration files can be accessed directly on target system in '/opt/collectd/etc/collectd.conf.d'.
+It can be used for manual changes or enable/disable plugins. If configuration has been modified it is required to
+restart collectd:
+
+.. code:: bash
+
+    $ sudo docker restart bar-collectd
+
+Download collectd+kafka+ves containers
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Before running Kafka an instance of zookeeper is required. See `Run Kafka docker image`_ for notes on how to run it.
+The 'zookeeper_hostname' and 'broker_id' can be set in ./roles/run_kafka/vars/main.yml.
+
+.. code:: bash
+
+    $ sudo ansible-playbook -i default.inv collectd_ves.yml
+
+Check the three containers are running, the output of docker ps should be similar to:
+
+.. code:: bash
+
+    $ sudo docker ps
+    CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                     PORTS               NAMES
+    8b095ad94ea1        zookeeper:3.4.11           "/docker-entrypoin..."   7 minutes ago       Up 7 minutes                                   awesome_jennings
+    eb8bba3c0b76        opnfv/barometer-ves        "./start_ves_app.s..."   21 minutes ago      Up 6 minutes                                   bar-ves
+    86702a96a68c        opnfv/barometer-kafka      "/src/start_kafka.sh"    21 minutes ago      Up 6 minutes                                   bar-kafka
+    daeeb68ad1d5        opnfv/barometer-collectd   "/run_collectd.sh ..."   13 days ago         Up 6 minutes                                   bar-collectd
+
+
+To make some changes when a container is running run:
+
+.. code:: bash
+
+    $ sudo docker exec -ti <CONTAINER ID> /bin/bash
+
+List of default plugins for collectd container
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+By default the collectd is started with default configuration which includes the followin plugins:
+   * csv, contextswitch, cpu, cpufreq, df, disk, ethstat, ipc, irq, load, memory, numa, processes,
+     swap, turbostat, uuid, uptime, exec, hugepages, intel_pmu, ipmi, write_kafka, logfile, mcelog,
+     network, intel_rdt, rrdtool, snmp_agent, syslog, virt, ovs_stats, ovs_events
+
+Some of the plugins are loaded depending on specific system requirements and can be omitted if
+dependency is not met, this is the case for:
+   * hugepages, ipmi, mcelog, intel_rdt, virt, ovs_stats, ovs_events
+
+List and description of tags used in ansible scripts
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Tags can be used to run a specific part of the configuration without running the whole playbook.
+To run a specific parts only:
+
+.. code:: bash
+
+    $ sudo ansible-playbook -i default.inv collectd_service.yml --tags "syslog,cpu,uuid"
+
+To disable some parts or plugins:
+
+.. code:: bash
+
+    $ sudo ansible-playbook -i default.inv collectd_service.yml --skip-tags "en_default_all,syslog,cpu,uuid"
+
+List of available tags:
+
+install_docker
+  Install docker and required dependencies with package manager.
+
+add_docker_proxy
+  Configure proxy file for docker service if proxy is set on host environment.
+
+rm_config_dir
+  Remove collectd config files.
+
+copy_additional_configs
+  Copy additional configuration files to target system. Path to additional configuration
+  is stored in $barometer_dir/docker/ansible/roles/config_files/vars/main.yml as additional_configs_path.
+
+en_default_all
+  Set of default read plugins: contextswitch, cpu, cpufreq, df, disk, ethstat, ipc, irq,
+  load, memory, numa, processes, swap, turbostat, uptime.
+
+plugins tags
+  The following tags can be used to enable/disable plugins: csv, contextswitch, cpu,
+  cpufreq, df, disk, ethstat, ipc, irq, load, memory, numa, processes, swap, turbostat,
+  uptime, exec, hugepages, ipmi, kafka, logfile, mcelogs, network, pmu, rdt, rrdtool,
+  snmp, syslog, virt, ovs_stats, ovs_events, uuid.
 
 Installing Docker
 -----------------
 .. Describe the specific capabilities and usage for <XYZ> feature.
 .. Provide enough information that a user will be able to operate the feature on a deployed scenario.
 
+.. note::
+   The below sections provide steps for manual installation and configuration
+   of docker images. They are not neccessary if docker images were installed with
+   use of Ansible-Playbook.
+
 On Ubuntu
 ^^^^^^^^^^
 .. note::
@@ -151,8 +455,9 @@ Replace <username> above with an appropriate user name.
          From       : https://download.docker.com/linux/centos/gpg
         Is this ok [y/N]: y
 
-Proxy Configuration:
-^^^^^^^^^^^^^^^^^^^^
+Manual proxy configuration for docker
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
 .. note::
    This applies for both CentOS and Ubuntu.
 
@@ -268,7 +573,13 @@ Build the collectd docker image
     $ git clone https://gerrit.opnfv.org/gerrit/barometer
     $ cd barometer/docker/barometer-collectd
     $ sudo docker build -t opnfv/barometer-collectd --build-arg http_proxy=`echo $http_proxy` \
-      --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
+      --build-arg https_proxy=`echo $https_proxy` --network=host -f Dockerfile .
+
+.. note::
+   Main directory of barometer source code (directory that contains 'docker',
+   'docs', 'src' and systems sub-directories) will be referred as
+   ``<BAROMETER_REPO_DIR>``
+
 
 .. note::
    In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to be
@@ -294,17 +605,38 @@ Run the collectd docker image
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 .. code:: bash
 
-   $ sudo docker run -tid --net=host -v `pwd`/../src/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \
-    -v /var/run:/var/run -v /tmp:/tmp --privileged opnfv/barometer-collectd /run_collectd.sh
+   $ cd <BAROMETER_REPO_DIR>
+   $ sudo docker run -ti --net=host -v \
+   `pwd`/src/collectd/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \
+   -v /var/run:/var/run -v /tmp:/tmp --privileged opnfv/barometer-collectd
 
 .. note::
-   The docker collectd image contains configuration for all the collectd plugins. In the command
-   above we are overriding /opt/collectd/etc/collectd.conf.d by mounting a host directory
-   `pwd`/../src/collectd_sample_configs that contains only the sample configurations we are interested
-   in running. *It's important to do this if you don't have DPDK, or RDT installed on the host*.
+   The docker collectd image contains configuration for all the collectd
+   plugins. In the command above we are overriding
+   /opt/collectd/etc/collectd.conf.d by mounting a host directory
+   src/collectd/collectd_sample_configs that contains only the sample
+   configurations we are interested in running.
+
+   *If some dependencies for plugins listed in configuration directory
+   aren't met, then collectd startup may fail(collectd tries to
+   initialize plugins configurations for all given config files that can
+   be found in shared configs directory and may fail if some dependency
+   is missing).*
+
+   If `DPDK` or `RDT` can't be installed on host, then corresponding config
+   files should be removed from shared configuration directory
+   (`<BAROMETER_REPO_DIR>/src/collectd/collectd_sample_configs/`) prior
+   to starting barometer-collectd container. By example: in case of missing
+   `DPDK` functionality on the host, `dpdkstat.conf` and `dpdkevents.conf`
+   should be removed.
+
    Sample configurations can be found at:
    https://github.com/opnfv/barometer/tree/master/src/collectd/collectd_sample_configs
 
+   List of barometer-collectd dependencies on host for various plugins
+   can be found at:
+   https://wiki.opnfv.org/display/fastpath/Barometer-collectd+host+dependencies
+
 Check your docker image is running
 
 .. code:: bash
@@ -360,9 +692,7 @@ images from https://hub.docker.com/r/opnfv/barometer-influxdb/ and https://hub.d
    If you have pulled the pre-built barometer-influxdb and barometer-grafana images there is no
    requirement to complete steps outlined in  sections `Build InfluxDB Docker Image`_ and
    `Build Grafana Docker Image`_ and you can proceed directly to section
-   `Run the Influxdb and Grafana Images`_ If you wish to run the barometer-influxdb and
-   barometer-grafana images via Docker Compose proceed directly to section
-   `Docker Compose`_.
+   `Run the Influxdb and Grafana Images`_
 
 Build InfluxDB docker image
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -373,7 +703,7 @@ Build influxdb image from Dockerfile
 
   $ cd barometer/docker/barometer-influxdb
   $ sudo docker build -t opnfv/barometer-influxdb --build-arg http_proxy=`echo $http_proxy` \
-    --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
+    --build-arg https_proxy=`echo $https_proxy` --network=host -f Dockerfile .
 
 .. note::
    In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to
@@ -427,7 +757,8 @@ Run the InfluxDB docker image
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 .. code:: bash
 
-   $ sudo docker run -tid -v /var/lib/influxdb:/var/lib/influxdb -p 8086:8086 -p 25826:25826  opnfv/barometer-influxdb
+   $ sudo docker run -tid -v /var/lib/influxdb:/var/lib/influxdb --net=host\
+    --name bar-influxdb opnfv/barometer-influxdb
 
 Check your docker image is running
 
@@ -441,6 +772,58 @@ To make some changes when the container is running run:
 
    sudo docker exec -ti <CONTAINER ID> /bin/bash
 
+When both collectd and InfluxDB containers are located
+on the same host, then no additional configuration have to be added and you
+can proceed directly to `Run the Grafana docker image`_ section.
+
+Modify collectd to support InfluxDB on another host
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+If InfluxDB and collectd containers are located on separate hosts, then
+additional configuration have to be done in ``collectd`` container - it
+normally sends data using network plugin to 'localhost/127.0.0.1' therefore
+changing output location is required:
+
+1. Stop and remove running bar-collectd container (if it is running)
+
+   .. code:: bash
+
+      $ sudo docker ps #to get collectd container name
+      $ sudo docker rm -f <COLLECTD_CONTAINER_NAME>
+
+2. Go to location where shared collectd config files are stored
+
+   .. code:: bash
+
+      $ cd <BAROMETER_REPO_DIR>
+      $ cd src/collectd/collectd_sample_configs
+
+3. Edit content of ``network.conf`` file.
+   By default this file looks like that:
+
+   .. code::
+
+      LoadPlugin  network
+      <Plugin network>
+      Server "127.0.0.1" "25826"
+      </Plugin>
+
+   ``127.0.0.1`` string has to be replaced with the IP address of host where
+   InfluxDB container is running (e.g. ``192.168.121.111``). Edit this using your
+   favorite text editor.
+
+4. Start again collectd container like it is described in
+   `Run the collectd docker image`_ chapter
+
+   .. code:: bash
+
+      $ cd <BAROMETER_REPO_DIR>
+      $ sudo docker run -ti --name bar-collectd --net=host -v \
+      `pwd`/src/collectd/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \
+      -v /var/run:/var/run -v /tmp:/tmp --privileged opnfv/barometer-collectd
+
+Now collectd container will be sending data to InfluxDB container located on
+remote Host pointed by IP configured in step 3.
+
 Run the Grafana docker image
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -448,16 +831,19 @@ Connecting to an influxdb instance running on local system and adding own custom
 
 .. code:: bash
 
-   $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana -v ${PWD}/dashboards:/opt/grafana/dashboards \
-     -p 3000:3000 opnfv/barometer-grafana
+   $ cd <BAROMETER_REPO_DIR>
+   $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana \
+     -v ${PWD}/docker/barometer-grafana/dashboards:/opt/grafana/dashboards \
+     --name bar-grafana --net=host opnfv/barometer-grafana
 
 Connecting to an influxdb instance running on remote system with hostname of someserver and IP address
 of 192.168.121.111
 
 .. code:: bash
 
-   $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana -p 3000:3000 -e \
-     influxdb_host=someserver --add-host someserver:192.168.121.111 opnfv/barometer-grafana
+   $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana --net=host -e \
+     influxdb_host=someserver --add-host someserver:192.168.121.111 --name \
+     bar-grafana opnfv/barometer-grafana
 
 Check your docker image is running
 
@@ -473,6 +859,30 @@ To make some changes when the container is running run:
 
 Connect to <host_ip>:3000 with a browser and log into grafana: admin/admin
 
+Cleanup of influxdb/grafana configuration
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When user wants to remove current grafana and influxdb configuration,
+folowing actions have to be performed
+
+1. Stop and remove running influxdb and grafana containers
+
+.. code:: bash
+
+   sudo docker rm -f bar-grafana bar-influxdb
+
+2. Remove shared influxdb and grafana folders from the Host
+
+.. code:: bash
+
+   sudo rm -rf /var/lib/grafana
+   sudo rm -rf /var/lib/influxdb
+
+.. note::
+   Shared folders are storing configuration of grafana and influxdb
+   containers. In case of changing influxdb or grafana configuration
+   (e.g. moving influxdb to another host) it is good to perform cleanup
+   on shared folders to not affect new setup with an old configuration.
 
 Build and Run VES and Kafka Docker Images
 ------------------------------------------
@@ -495,7 +905,7 @@ images from https://hub.docker.com/r/opnfv/barometer-ves/ and  https://hub.docke
 .. note::
    If you have pulled the pre-built images there is no requirement to complete steps outlined
    in sections `Build Kafka Docker Image`_ and `Build VES Docker Image`_ and you can proceed directly to section
-   `Run Kafka Docker Image`_ If you wish to run the docker images via Docker Compose proceed directly to section `Docker Compose`_.
+   `Run Kafka Docker Image`_
 
 Build Kafka docker image
 ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -619,80 +1029,118 @@ file named custom.yaml
    $ sudo docker run -tid --net=host -v ${PWD}/custom.config:/opt/ves/config/ves_app_config.conf \
      -v ${PWD}/yaml/:/opt/ves/yaml/ opnfv/barometer-ves custom.yaml
 
-Docker Compose
---------------
+Run VES Test Collector application
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Install docker-compose
-^^^^^^^^^^^^^^^^^^^^^^
+VES Test Collector application can be used for displaying platform
+wide metrics that are collected by barometer-ves container.
+Setup instructions are located in: :ref:`Setup VES Test Collector`
 
-On the node where you want to run influxdb + grafana or the node where you want to run the VES app
-zookeeper and Kafka containers together:
+Build and Run DMA and Redis Docker Images
+-----------------------------------------------------
 
-.. note::
-   The default configuration for all these containers is to run on the localhost. If this is not
-   the model you want to use then please make the appropriate configuration changes before launching
-   the docker containers.
+Download DMA docker images
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you wish to use pre-built barometer project's DMA images, you can pull the
+images from https://hub.docker.com/r/opnfv/barometer-dma/
 
-1. Start by installing docker compose
+.. note::
+   If your preference is to build images locally please see sections `Build DMA Docker Image`_
 
 .. code:: bash
 
-   $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
+    $ docker pull opnfv/barometer-dma
 
 .. note::
-   Use the latest Compose release number in the download command. The above command is an example,
-   and it may become out-of-date. To ensure you have the latest version, check the Compose repository
-   release page on GitHub.
-
-2. Apply executable permissions to the binary:
-
-.. code:: bash
+   If you have pulled the pre-built images there is no requirement to complete steps outlined
+   in sections `Build DMA Docker Image`_ and you can proceed directly to section
+   `Run DMA Docker Image`_
 
-   $ sudo chmod +x /usr/bin/docker-compose
+Build DMA docker image
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-3. Test the installation.
+Build DMA docker image:
 
 .. code:: bash
 
-  $ sudo docker-compose --version
+    $ cd barometer/docker/barometer-dma
+    $ sudo docker build -t opnfv/barometer-dma --build-arg http_proxy=`echo $http_proxy` \
+      --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
 
-Run the InfluxDB and Grafana containers using docker compose
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. note::
+   In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs
+   to be passed only if system is behind an HTTP or HTTPS proxy server.
 
-Launch containers:
+Check the docker images:
 
 .. code:: bash
 
-   $ cd barometer/docker/compose/influxdb-grafana/
-   $ sudo docker-compose up -d
+   $ sudo docker images
 
-Check your docker images are running
+Output should contain a barometer image:
 
-.. code:: bash
+.. code::
 
-   $ sudo docker ps
+   REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
+   opnfv/barometer-dma          latest              2f14fbdbd498        3 hours ago         941 MB
 
-Connect to <host_ip>:3000 with a browser and log into grafana: admin/admin
+Run Redis docker image
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Run the Kafka, zookeeper and VES containers using docker compose
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. note::
+   Before running DMA, Redis must be running.
 
-Launch containers:
+Run Redis docker image:
 
 .. code:: bash
 
-   $ cd barometer/docker/compose/ves/
-   $ sudo docker-compose up -d
+   $ sudo docker run -tid -p 6379:6379 --name barometer-redis redis
 
-Check your docker images are running
+Check your docker image is running
 
 .. code:: bash
 
-   sudo docker ps
+   sudo docker ps
 
-Testing the docker image
-^^^^^^^^^^^^^^^^^^^^^^^^
-TODO
+Run DMA docker image
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. note::
+
+Run DMA docker image with default configuration
+
+.. code:: bash
+
+   $ cd barometer/docker/barometer-dma
+   $ sudo mkdir /etc/barometer-dma
+   $ sudo cp ../../src/dma/examples/config.toml /etc/barometer-dma/
+   $ sudo vi /etc/barometer-dma/config.toml
+   (edit amqp_password and os_password:OpenStack admin password)
+
+   $ sudo su -
+   (When there is no key for SSH access authentication)
+   # ssh-keygen
+   (Press Enter until done)
+   (Backup if necessary)
+   # cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys_org
+   # cat ~/.ssh/authorized_keys_org ~/.ssh/id_rsa.pub \
+     > ~/.ssh/authorized_keys
+   # exit
+
+   $ sudo docker run -tid --net=host --name server \
+     -v /etc/barometer-dma:/etc/barometer-dma \
+     -v /root/.ssh/id_rsa:/root/.ssh/id_rsa \
+     -v /etc/collectd/collectd.conf.d:/etc/collectd/collectd.conf.d \
+     opnfv/barometer-dma /server
+
+   $ sudo docker run -tid --net=host --name infofetch \
+     -v /etc/barometer-dma:/etc/barometer-dma \
+     -v /var/run/libvirt:/var/run/libvirt \
+     opnfv/barometer-dma /infofetch
+
+   (Execute when installing the threshold evaluation binary)
+   $ sudo docker cp infofetch:/threshold ./
+   $ sudo ln -s ${PWD}/threshold /usr/local/bin/
 
 References
 ^^^^^^^^^^^