Public | Automated Build

Last pushed: a year ago
Short Description
Docker container for the latest version with most recent dependencies
Full Description

PredictionIO as a Docker container

PredictionIO is an open-source Machine Learning
server for developers and data scientists to build and deploy predictive
applications in a fraction of the time.


As of 2016-06-15 this container has the following applications installed:

  • PredictionIO 0.9.6
  • Spark 1.6.1
  • Elasticsearch 1.7.5
  • HBase 1.0.3



To run the basic container, without a template yet deployed:

$ docker run -d -p 7070:7070 -p 8000:8000 tobilg/predictionio

This starts the event server and the PredictionIO engine and webservice. To deploy an engine while running, open a Bash shell via

$ docker exec -it <containerid> bash

Then, follow the steps after step 2 in the quickstart tutorial

Use preconfigured engine with basic container

To use the basic container with a preconfigured custom engine, map the engine's directory to the containers /CustomEngine folder, and run the ./ script.

So, if your engine resides in the ~/engines/myCustomEngine folder, you can use

$ docker run -d -p 7070:7070 -p 8000:8000 -v ~/engines/myCustomEngine:/CustomEngine tobilg/predictionio

to map it in the container. Please don't forget to run ./ script after connecting into the running container (see Basic).

Own Docker container with custom engine

You can create a custom Dockerfile if you want to include and deploy you custom engine with the container itself. If your custom engine resides in ~/engines/myCustomEngine, create the following Dockerfile in the same folder:

FROM tobilg/predictionio

ADD . /CustomEngine

RUN ./

EXPOSE 7070 8000

ENTRYPOINT ["/PredictionIO-0.9.6/bin/pio-start-all"]

With Mesos/Marathon

To run the container with Marathon on Mesos with bridge networking, issue the following command (replace <MarathonServer> with an actual IP or hostname):

curl -H "Content-Type: application/json" -XPOST 'http://<MarathonServer>:8080/v2/apps' -d '{
    "id": "predictionio-server",
    "container": {
        "docker": {
            "image": "tobilg/predictionio",
            "network": "BRIDGE",
            "portMappings": [
              { "containerPort": 7070 },
              { "containerPort": 8000 }
        "type": "DOCKER"
    "cpus": 4,
    "mem": 8192,
    "instances": 1

You'll have to have a look at the launched task to see where the container is actually launched, or use a service discovery tool such as Mesos DNS.
If you want to use static ports, you have to use HOST networking like this:

curl -H "Content-Type: application/json" -XPOST 'http://<MarathonServer>:8080/v2/apps' -d '{
    "id": "predictionio-server",
    "container": {
        "docker": {
            "image": "tobilg/predictionio",
            "network": "HOST"
        "type": "DOCKER"
    "cpus": 4,
    "mem": 8192,
    "instances": 1,
    "ports": [7070, 8000]
Docker Pull Command
Source Repository

Comments (0)