Marathon v0.6.0 released

Jun 26, 2014

Ross Allen


3 min read

Marathon v0.6.0 is available for download and supports launching any task in a Docker container via Deimos and Apache Mesos v0.19.0+. It has some other goodies too like a refreshed UI and disk resource accounting.
Note: Marathon 0.6.0 requires Mesos 0.19.0+. If you are running an earlier version of Mesos, you'll need to upgrade Mesos first.
Docker Containers for Any Task
Mesos 0.19.0 enables containerization for any task by delegating to external programs for isolation. Prior to Marathon 0.6.0, it was necessary to use a special executor, like Mesos-Docker, for any task you wanted to run in a Docker container.
Notice the "executor" option below for Docker containers before 0.6.0:
# Containerization with Marathon 0.5.1, Mesos 0.18.0, Mesos-Docker executorcurl -X POST -H "Accept: application/json" -H "Content-Type: application/json"   localhost:8080/v2/apps -d '{    "container": {"image": "docker:///zaiste/postgresql", "options": ["-e", "X=7"]},    "cpus": 0.1,    "executor": "/var/lib/mesos/mesos-docker",    "id": "docker-tester",    "instances": 2,    "mem": 5  }'
With Marathon 0.6.0, any task can run in a container because the "container" value is now passed to Mesos, and Mesos delegates containerization to an external program like Mesosphere's Deimos.
No specific executor is required for Docker containers in 0.6.0 when running Deimos:
# Containerization with Marathon 0.6.0, Mesos 0.19.0, Deimoscurl -X POST -H "Accept: application/json" -H "Content-Type: application/json"   localhost:8080/v2/apps -d '{    "container": {"image": "docker:///zaiste/postgresql", "options": ["-e", "X=7"]},    "cpus": 0.1,    "id": "docker-tester",    "instances": 2,    "mem": 5  }'
Note: The Mesos-Docker executor is still supported in 0.6.0. If your tasks are using it, no changes are required to continue using Mesos-Docker.
Fresh Visual Design and Brand
Since we are big fans of our brand colors and style, we decided our tools should get the same treatment. Marathon got a facelift in this release.
The Marathon Brand
The Refreshed Marathon App List
Task Health Checks in the UI
Task health checks were introduced in Marathon 0.5.0, and now they have been exposed in the UI. Healthy tasks get a small green dot, unhealthy tasks get a red one, and tasks whose health checks have not yet been performed get a gray dot.
To see the health checks you can start a simple HTTP server app that passes its health checks:
curl -X POST -H "Content-Type: application/json" localhost:8080/v2/apps -d '{  "cmd": "python -m SimpleHTTPServer $PORT0",  "cpus": 0.1,  "healthChecks": [{    "gracePeriodSeconds": 3,    "intervalSeconds": 10,    "path": "/",    "portIndex": 0,    "protocol": "HTTP",    "timeoutSeconds": 10  }],  "id": "healthy-app",  "instances": 3,  "mem": 10,  "ports": [0]  }}'
View the diff for Marathon 0.5.1 to 0.6.0 for detailed changes.
New Features
  • Exposed disk resources in the API and in the UI. The attribute is available as the key "disk" in the app resource. Mesos currently supports disk accounting but does not yet provide disk isolation.
  • Exposed task health checks in the UI.
  • Skinned the UI with Marathon's refreshed branding.
  • Containerization is now configured with Mesos's ContainerInfo, enabling use of containerization plugins like Deimos.
Major Changes
  • Requires Mesos 0.19
  • App IDs must conform to the LDH domain name rules so they can be used to generate DNS entries.
  • Task IDs are now APP-ID.UUID, using time-based UUIDs
Bug Fixes
Marathon 0.6.0 features a number of stability improvements and bug fixes. Check the full list of closed issues for details.

Ready to get started?