You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by dl...@apache.org on 2014/11/11 05:11:04 UTC

svn commit: r1638021 [1/6] - in /mesos/site: publish/ publish/documentation/ publish/documentation/configuration/ publish/documentation/external-containerizer/ publish/documentation/latest/ publish/documentation/latest/configuration/ publish/documentat...

Author: dlester
Date: Tue Nov 11 04:11:00 2014
New Revision: 1638021

URL: http://svn.apache.org/r1638021
Log:
Updates Mesos documentation.

Added:
    mesos/site/publish/documentation/external-containerizer/
    mesos/site/publish/documentation/external-containerizer/index.html
    mesos/site/publish/documentation/latest/external-containerizer/
    mesos/site/publish/documentation/latest/external-containerizer/index.html
    mesos/site/publish/documentation/latest/mesos-containerizer/
    mesos/site/publish/documentation/latest/mesos-containerizer/index.html
    mesos/site/publish/documentation/latest/modules/
    mesos/site/publish/documentation/latest/modules/index.html
    mesos/site/publish/documentation/mesos-containerizer/
    mesos/site/publish/documentation/mesos-containerizer/index.html
    mesos/site/publish/documentation/modules/
    mesos/site/publish/documentation/modules/index.html
    mesos/site/source/documentation/latest/external-containerizer.md
    mesos/site/source/documentation/latest/mesos-containerizer.md
    mesos/site/source/documentation/latest/modules.md
Modified:
    mesos/site/publish/documentation/configuration/index.html
    mesos/site/publish/documentation/index.html
    mesos/site/publish/documentation/latest/configuration/index.html
    mesos/site/publish/documentation/latest/index.html
    mesos/site/publish/documentation/latest/powered-by-mesos/index.html
    mesos/site/publish/documentation/latest/release-guide/index.html
    mesos/site/publish/documentation/latest/upgrades/index.html
    mesos/site/publish/documentation/powered-by-mesos/index.html
    mesos/site/publish/documentation/release-guide/index.html
    mesos/site/publish/documentation/upgrades/index.html
    mesos/site/publish/sitemap.xml
    mesos/site/source/documentation/latest.html.md
    mesos/site/source/documentation/latest/configuration.md
    mesos/site/source/documentation/latest/powered-by-mesos.md
    mesos/site/source/documentation/latest/release-guide.md
    mesos/site/source/documentation/latest/upgrades.md

Modified: mesos/site/publish/documentation/configuration/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/configuration/index.html?rev=1638021&r1=1638020&r2=1638021&view=diff
==============================================================================
--- mesos/site/publish/documentation/configuration/index.html (original)
+++ mesos/site/publish/documentation/configuration/index.html Tue Nov 11 04:11:00 2014
@@ -123,378 +123,1409 @@
 
 <p><em>These options can be supplied to both masters and slaves.</em></p>
 
-<pre><code>  --ip=VALUE                                 IP address to listen on
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+
+  <tr>
+    <td>
+      --ip=VALUE
+    </td>
+    <td>
+      IP address to listen on
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]help
+    </td>
+    <td>
+      Prints this help message (default: false)
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]initialize_driver_logging
+    </td>
+    <td>
+      Whether to automatically initialize google logging of scheduler
+      and/or executor drivers. (default: true)
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --log_dir=VALUE
+    </td>
+    <td>
+      Location to put log files (no default, nothing
+      is written to disk unless specified;
+      does not affect logging to stderr)
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --logbufsecs=VALUE
+    </td>
+    <td>
+      How many seconds to buffer log messages for (default: 0)
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --logging_level=VALUE
+    </td>
+    <td>
+      Log message at or above this level; possible values:
+      'INFO', 'WARNING', 'ERROR'; if quiet flag is used, this
+      will affect just the logs from log_dir (if specified) (default: INFO)
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --port=VALUE
+    </td>
+    <td>
+      Port to listen on (master default: 5050 and slave default: 5051)
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]quiet
+    </td>
+    <td>
+      Disable logging to stderr (default: false)
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]version
+    </td>
+    <td>
+      Show version and exit. (default: false)
+</table>
 
-  --[no-]help                                Prints this help message (default: false)
-
-  --log_dir=VALUE                            Location to put log files (no default, nothing
-                                             is written to disk unless specified;
-                                             does not affect logging to stderr)
-
-  --logbufsecs=VALUE                         How many seconds to buffer log messages for (default: 0)
-
-  --logging_level=VALUE                      Log message at or above this level; possible values:
-                                             'INFO', 'WARNING', 'ERROR'; if quiet flag is used, this
-                                             will affect just the logs from log_dir (if specified) (default: INFO)
-
-  --port=VALUE                               Port to listen on (master default: 5050 and slave default: 5051)
-
-  --[no-]quiet                               Disable logging to stderr (default: false)
-
-  --[no-]version                             Show version and exit. (default: false)
-</code></pre>
 
 <h2>Master Options</h2>
 
 <p><em>Required Flags</em></p>
 
-<pre><code>  --quorum=VALUE                           The size of the quorum of replicas when using 'replicated_log' based
-                                           registry. It is imperative to set this value to be a majority of
-                                           masters i.e., quorum &gt; (number of masters)/2.
-
-  --work_dir=VALUE                         Where to store the persistent information stored in the Registry.
-
-  --zk=VALUE                               ZooKeeper URL (used for leader election amongst masters)
-                                           May be one of:
-                                             zk://host1:port1,host2:port2,.../path
-                                             zk://username:password@host1:port1,host2:port2,.../path
-                                             file://path/to/file (where file contains one of the above)
-</code></pre>
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+  <tr>
+    <td>
+      --quorum=VALUE
+    </td>
+    <td>
+      The size of the quorum of replicas when using 'replicated_log' based
+      registry. It is imperative to set this value to be a majority of
+      masters i.e., quorum > (number of masters)/2.
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --work_dir=VALUE
+    </td>
+    <td>
+      Where to store the persistent information stored in the Registry.
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --zk=VALUE
+    </td>
+    <td>
+      ZooKeeper URL (used for leader election amongst masters)
+      May be one of:
+<pre><code>zk://host1:port1,host2:port2,.../path
+zk://username:password@host1:port1,host2:port2,.../path
+file://path/to/file (where file contains one of the above)</code></pre>
+    </td>
+  </tr>
+</table>
+
 
 <p><em>Optional Flags</em></p>
 
-<pre><code>  --allocation_interval=VALUE              Amount of time to wait between performing
-                                            (batch) allocations (e.g., 500ms, 1sec, etc). (default: 1secs)
-  --[no-]authenticate                      If authenticate is 'true' only authenticated frameworks are allowed
-                                           to register. If 'false' unauthenticated frameworks are also
-                                           allowed to register. (default: false)
-  --[no-]authenticate_slaves               If 'true' only authenticated slaves are allowed to register.
-                                           If 'false' unauthenticated slaves are also allowed to register. (default: false)
-  --cluster=VALUE                          Human readable name for the cluster,
-                                           displayed in the webui.
-  --credentials=VALUE                      Path to a file with a list of credentials.
-                                           Each line contains 'principal' and 'secret' separated by whitespace.
-                                           Path could be of the form 'file:///path/to/file' or '/path/to/file'.
-  --framework_sorter=VALUE                 Policy to use for allocating resources
-                                           between a given user's frameworks. Options
-                                           are the same as for user_allocator. (default: drf)
-  --hostname=VALUE                         The hostname the master should advertise in ZooKeeper.
-                                           If left unset, the hostname is resolved from the IP address that the master binds to.
-  --[no-]log_auto_initialize               Whether to automatically initialize the replicated log used for the
-                                           registry. If this is set to false, the log has to be manually
-                                           initialized when used for the very first time. (default: true)
-
-  --recovery_slave_removal_limit=VALUE     For failovers, limit on the percentage of slaves that can be removed
-                                           from the registry *and* shutdown after the re-registration timeout
-                                           elapses. If the limit is exceeded, the master will fail over rather
-                                           than remove the slaves.
-                                           This can be used to provide safety guarantees for production
-                                           environments. Production environments may expect that across Master
-                                           failovers, at most a certain percentage of slaves will fail
-                                           permanently (e.g. due to rack-level failures).
-                                           Setting this limit would ensure that a human needs to get
-                                           involved should an unexpected widespread failure of slaves occur
-                                           in the cluster.
-                                           Values: [0%-100%] (default: 100%)
-
-  --registry=VALUE                         Persistence strategy for the registry;
-                                           available options are 'replicated_log', 'in_memory' (for testing). (default: replicated_log)
-
-  --registry_fetch_timeout=VALUE           Duration of time to wait in order to fetch data from the registry
-                                           after which the operation is considered a failure. (default: 1mins)
-
-  --registry_store_timeout=VALUE           Duration of time to wait in order to store data in the registry
-                                           after which the operation is considered a failure. (default: 5secs)
-
-  --[no-]registry_strict                   Whether the Master will take actions based on the persistent
-                                           information stored in the Registry. Setting this to false means
-                                           that the Registrar will never reject the admission, readmission,
-                                           or removal of a slave. Consequently, 'false' can be used to
-                                           bootstrap the persistent state on a running cluster.
-                                           NOTE: This flag is *experimental* and should not be used in
-                                           production yet. (default: false)
-
-  --roles=VALUE                            A comma separated list of the allocation
-                                           roles that frameworks in this cluster may
-                                           belong to.
-
-  --[no-]root_submissions                  Can root submit frameworks? (default: true)
-
-  --slave_reregister_timeout=VALUE         The timeout within which all slaves are expected to re-register
-                                           when a new master is elected as the leader. Slaves that do not
-                                           re-register within the timeout will be removed from the registry
-                                           and will be shutdown if they attempt to communicate with master.
-                                           NOTE: This value has to be atleast 10mins. (default: 10mins)
-
-  --user_sorter=VALUE                      Policy to use for allocating resources
-                                           between users. May be one of:
-                                             dominant_resource_fairness (drf) (default: drf)
-
-  --webui_dir=VALUE                        Location of the webui files/assets (default: /usr/local/share/mesos/webui)
-
-  --weights=VALUE                          A comma separated list of role/weight pairs
-                                           of the form 'role=weight,role=weight'. Weights
-                                           are used to indicate forms of priority.
-
-  --whitelist=VALUE                        Path to a file with a list of slaves
-                                           (one per line) to advertise offers for.
-                                           Path could be of the form 'file:///path/to/file' or '/path/to/file'. (default: *)
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+  <tr>
+    <td>
+      --acls=VALUE
+    </td>
+    <td>
+      The value could be a JSON formatted string of ACLs
+      or a file path containing the JSON formatted ACLs used
+      for authorization. Path could be of the form <code>file:///path/to/file</code>
+      or <code>/path/to/file</code>.
+      <p/>
+      See the ACLs protobuf in mesos.proto for the expected format.
+      <p/>
+      JSON file example:
+<pre><code>{
+  "register_frameworks": [
+    {
+      "principals": { "type": "ANY" },
+      "roles": { "values": ["a"] }
+    }
+  ],
+  "run_tasks": [
+    {
+      "principals": { "values": ["a", "b"] },
+      "users": { "values": ["c"] }
+    }
+  ],
+  "shutdown_frameworks": [
+    {
+      "principals": { "values": ["a", "b"] },
+      "framework_principals": { "values": ["c"] }
+    }
+  ]
+}</code></pre>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --allocation_interval=VALUE
+    </td>
+    <td>
+      Amount of time to wait between performing
+      (batch) allocations (e.g., 500ms, 1sec, etc). (default: 1secs)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]authenticate
+    </td>
+    <td>
+      If authenticate is 'true' only authenticated frameworks are allowed
+      to register. If 'false' unauthenticated frameworks are also
+      allowed to register. (default: false)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]authenticate_slaves
+    </td>
+    <td>
+      If 'true' only authenticated slaves are allowed to register.
+      <p/>
+      If 'false' unauthenticated slaves are also allowed to register. (default: false)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --authenticators=VALUE
+    </td>
+    <td>
+      Authenticator implementation to use when authenticating frameworks
+      and/or slaves. Use the default <code>crammd5</code>, or
+        load an alternate authenticator module using <code>--modules</code>. (default: crammd5)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --cluster=VALUE
+    </td>
+    <td>
+      Human readable name for the cluster,
+      displayed in the webui.
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --credentials=VALUE
+    </td>
+    <td>
+      Either a path to a text file with a list of credentials,
+      each line containing 'principal' and 'secret' separated by whitespace,
+      or, a path to a JSON-formatted file containing credentials.
+      Path could be of the form <code>file:///path/to/file</code> or <code>/path/to/file</code>.
+      <p/>
+      JSON file Example:
+<pre><code>{
+  "credentials": [
+    {
+      "principal": "sherman",
+      "secret": "kitesurf"
+    }
+  ]
+}</code></pre>
+
+      <p/>
+      Text file Example:
+<pre><code>    username secret </code></pre>
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --framework_sorter=VALUE
+    </td>
+    <td>
+      Policy to use for allocating resources
+      between a given user's frameworks. Options
+      are the same as for user_allocator. (default: drf)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --hostname=VALUE
+    </td>
+    <td>
+      The hostname the master should advertise in ZooKeeper.
+      If left unset, the hostname is resolved from the IP address
+      that the master binds to.
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]log_auto_initialize
+    </td>
+    <td>
+      Whether to automatically initialize the replicated log used for the
+      registry. If this is set to false, the log has to be manually
+      initialized when used for the very first time. (default: true)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --modules=VALUE
+    </td>
+    <td>
+      List of modules to be loaded and be available to the internal
+      subsystems.
+      <p/>
+      Use <code>--modules=filepath</code> to specify the list of modules via a
+      file containing a JSON formatted string. 'filepath' can be
+      of the form <code>file:///path/to/file</code> or <code>/path/to/file</code>.
+      <p/>
+      Use <code>--modules="{...}"</code> to specify the list of modules inline.
+      <p/>
+      JSON file example:
+<pre><code>{
+  "libraries": [
+    {
+      "file": "/path/to/libfoo.so",
+      "modules": [
+        {
+          "name": "org_apache_mesos_bar",
+          "parameters": [
+            {
+              "key": "X",
+              "value": "Y"
+            }
+          ]
+        },
+        {
+          "name": "org_apache_mesos_baz"
+        }
+      ]
+    },
+    {
+      "name": "qux",
+      "modules": [
+        {
+          "name": "org_apache_mesos_norf"
+        }
+      ]
+    }
+  ]
+}</code></pre>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --offer_timeout=VALUE
+    </td>
+    <td>
+      Duration of time before an offer is rescinded from a framework.
+      <p/>
+      This helps fairness when running frameworks that hold on to offers,
+      or frameworks that accidentally drop offers.
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --rate_limits=VALUE
+    </td>
+    <td>
+      The value could be a JSON formatted string of rate limits
+      or a file path containing the JSON formatted rate limits used
+      for framework rate limiting.
+      <p/>
+      Path could be of the form <code>file:///path/to/file</code>
+        or <code>/path/to/file</code>.
+      <p/>
+
+      See the RateLimits protobuf in mesos.proto for the expected format.
+      <p/>
+
+      Example:
+<pre><code>{
+  "limits": [
+    {
+      "principal": "foo",
+      "qps": 55.5
+    },
+    {
+      "principal": "bar"
+    }
+  ],
+  "aggregate_default_qps": 33.3
+}</code></pre>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --recovery_slave_removal_limit=VALUE
+    </td>
+    <td>
+      For failovers, limit on the percentage of slaves that can be removed
+      from the registry *and* shutdown after the re-registration timeout
+      elapses. If the limit is exceeded, the master will fail over rather
+      than remove the slaves.
+      <p/>
+      This can be used to provide safety guarantees for production
+      environments. Production environments may expect that across Master
+      failovers, at most a certain percentage of slaves will fail
+      permanently (e.g. due to rack-level failures).
+      <p/>
+      Setting this limit would ensure that a human needs to get
+      involved should an unexpected widespread failure of slaves occur
+      in the cluster.
+      <p/>
+      Values: [0%-100%] (default: 100%)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --registry=VALUE
+    </td>
+    <td>
+      Persistence strategy for the registry;
+      <p/>
+      available options are 'replicated_log', 'in_memory' (for testing). (default: replicated_log)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --registry_fetch_timeout=VALUE
+    </td>
+    <td>
+      Duration of time to wait in order to fetch data from the registry
+      after which the operation is considered a failure. (default: 1mins)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --registry_store_timeout=VALUE
+    </td>
+    <td>
+      Duration of time to wait in order to store data in the registry
+      after which the operation is considered a failure. (default: 5secs)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]registry_strict
+    </td>
+    <td>
+      Whether the Master will take actions based on the persistent
+      information stored in the Registry. Setting this to false means
+      that the Registrar will never reject the admission, readmission,
+      or removal of a slave. Consequently, 'false' can be used to
+      bootstrap the persistent state on a running cluster.
+      <p/>
+      NOTE: This flag is *experimental* and should not be used in
+      production yet. (default: false)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --roles=VALUE
+    </td>
+    <td>
+      A comma separated list of the allocation
+      roles that frameworks in this cluster may
+      belong to.
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]root_submissions
+    </td>
+    <td>
+      Can root submit frameworks? (default: true)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --slave_reregister_timeout=VALUE
+    </td>
+    <td>
+      The timeout within which all slaves are expected to re-register
+      when a new master is elected as the leader. Slaves that do not
+      re-register within the timeout will be removed from the registry
+      and will be shutdown if they attempt to communicate with master.
+      <p/>
+      NOTE: This value has to be atleast 10mins. (default: 10mins)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --user_sorter=VALUE
+    </td>
+    <td>
+      Policy to use for allocating resources
+      between users. May be one of:
+      <p/>
+      dominant_resource_fairness (drf) (default: drf)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --webui_dir=VALUE
+    </td>
+    <td>
+      Directory path of the webui files/assets (default: /usr/local/share/mesos/webui)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --weights=VALUE
+    </td>
+    <td>
+      A comma separated list of role/weight pairs
+      of the form 'role=weight,role=weight'. Weights
+      are used to indicate forms of priority.
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --whitelist=VALUE
+    </td>
+    <td>
+      Path to a file with a list of slaves
+      (one per line) to advertise offers for.
+      <p/>
+      Path could be of the form <code>file:///path/to/file</code> or <code>/path/to/file</code>. (default: *)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --zk_session_timeout=VALUE
+    </td>
+    <td>
+      ZooKeeper session timeout. (default: 10secs)
+    </td>
+  </tr>
+</table>
 
-  --zk_session_timeout=VALUE               ZooKeeper session timeout. (default: 10secs)
-</code></pre>
 
 <h2>Slave Options</h2>
 
 <p><em>Required Flags</em></p>
 
-<pre><code>  --master=VALUE                             May be one of:
-                                               zk://host1:port1,host2:port2,.../path
-                                               zk://username:password@host1:port1,host2:port2,.../path
-                                               file://path/to/file (where file contains one of the above)
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+  <tr>
+    <td>
+      --master=VALUE
+    </td>
+    <td>
+      This specifies how to connect to a master or a quorum of masters. This flag works with 3 different techniques. It may be one of:
+      <ol>
+        <li> hostname or ip to a master or comma-delimited list of masters, e.g.,
+<pre><code>--master=localhost:5050
+--master=10.0.0.5:5050,10.0.0.6:5050
 </code></pre>
+        </li>
 
-<p><em>Optional Flags</em></p>
+        <li> zookeeper or quorum hostname/ip + port + master registration path </li>
+<pre><code>--master=zk://host1:port1,host2:port2,.../path
+--master=zk://username:password@host1:port1,host2:port2,.../path
+</code></pre>
+        </li>
 
-<pre><code>  --attributes=VALUE                         Attributes of machine
+        <li> a path to a file containing either one of the above options </li>
+<pre><code> --master=file://path/to/file (where file contains one of the above)</code></pre>
+        </li>
+      </ol>
+      Examples:
+
+    </td>
+  </tr>
+</table>
 
-  --[no-]cgroups_enable_cfs                  Cgroups feature flag to enable hard limits on CPU resources
-                                             via the CFS bandwidth limiting subfeature.
-                                             (default: false)
-
-  --cgroups_hierarchy=VALUE                  The path to the cgroups hierarchy root
-                                             (default: /sys/fs/cgroup)
-
-  --cgroups_root=VALUE                       Name of the root cgroup
-                                             (default: mesos)
-
-  --cgroups_subsystems=VALUE                 This flag has been deprecated and is no longer used,
-                                             please update your flags
-
-  --[no-]checkpoint                          Whether to checkpoint slave and frameworks information
-                                             to disk. This enables a restarted slave to recover
-                                             status updates and reconnect with (--recover=reconnect) or
-                                             kill (--recover=cleanup) old executors (default: true)
-
-  --containerizer_path=VALUE                 The path to the external containerizer executable used when
-                                             external isolation is activated (--isolation=external).
-
-  --credential=VALUE                         Path to a file containing a single line with
-                                             the 'principal' and 'secret' separated by whitespace.
-                                             Path could be of the form 'file:///path/to/file' or '/path/to/file'
-
-  --default_container_image=VALUE            The default container image to use if not specified by a task,
-                                             when using external containerizer
-
-  --default_role=VALUE                       Any resources in the --resources flag that
-                                             omit a role, as well as any resources that
-                                             are not present in --resources but that are
-                                             automatically detected, will be assigned to
-                                             this role. (default: *)
-
-  --disk_watch_interval=VALUE                Periodic time interval (e.g., 10secs, 2mins, etc)
-                                             to check the disk usage (default: 1mins)
-
-  --executor_registration_timeout=VALUE      Amount of time to wait for an executor
-                                             to register with the slave before considering it hung and
-                                             shutting it down (e.g., 60secs, 3mins, etc) (default: 1mins)
-
-  --executor_shutdown_grace_period=VALUE     Amount of time to wait for an executor
-                                             to shut down (e.g., 60secs, 3mins, etc) (default: 5secs)
-
-  --frameworks_home=VALUE                    Directory prepended to relative executor URIs (default: )
-
-  --gc_delay=VALUE                           Maximum amount of time to wait before cleaning up
-                                             executor directories (e.g., 3days, 2weeks, etc).
-                                             Note that this delay may be shorter depending on
-                                             the available disk usage. (default: 1weeks)
-
-  --hadoop_home=VALUE                        Where to find Hadoop installed (for
-                                             fetching framework executors from HDFS)
-                                             (no default, look for HADOOP_HOME in
-                                             environment or find hadoop on PATH) (default: )
-
-  --hostname=VALUE                           The hostname the slave should report.
-                                             If left unset, the hostname is resolved from the IP address that the slave binds to.
-
-  --isolation=VALUE                          Isolation mechanisms to use, e.g., 'posix/cpu,posix/mem'
-                                             or 'cgroups/cpu,cgroups/mem' or 'external'. (default: posix/cpu,posix/mem)
-
-  --launcher_dir=VALUE                       Location of Mesos binaries (default: /usr/local/libexec/mesos)
-
-  --recover=VALUE                            Whether to recover status updates and reconnect with old executors.
-                                             Valid values for 'recover' are
-                                             reconnect: Reconnect with any old live executors.
-                                             cleanup  : Kill any old live executors and exit.
-                                                        Use this option when doing an incompatible slave
-                                                        or executor upgrade!).
-                                             NOTE: If checkpointed slave doesn't exist, no recovery is performed
-                                                   and the slave registers with the master as a new slave. (default: reconnect)
-
-  --recovery_timeout=VALUE                   Amount of time alloted for the slave to recover. If the slave takes
-                                             longer than recovery_timeout to recover, any executors that are
-                                             waiting to reconnect to the slave will self-terminate.
-                                             NOTE: This flag is only applicable when checkpoint is enabled.
-                                             (default: 15mins)
-
-  --registration_backoff_factor=VALUE        Slave initially picks a random amount of time between [0, b], where
-                                             b = register_backoff_factor, to (re-)register with a new master.
-                                             Subsequent retries are exponentially backed off based on this
-                                             interval (e.g., 1st retry uses a random value between [0, b * 2^1],
-                                             2nd retry between [0, b * 2^2], 3rd retry between [0, b * 2^3] etc)
-                                             up to a maximum of 1mins (default: 1secs)
-
-  --resource_monitoring_interval=VALUE       Periodic time interval for monitoring executor
-                                             resource usage (e.g., 10secs, 1min, etc) (default: 1secs)
-
-  --resources=VALUE                          Total consumable resources per slave, in
-                                             the form 'name(role):value;name(role):value...'.
-
-  --slave_subsystems=VALUE                   List of comma-separated cgroup subsystems to run the slave binary
-                                             in, e.g., 'memory,cpuacct'. The default is none.
-                                             Present functionality is intended for resource monitoring and
-                                             no cgroup limits are set, they are inherited from the root mesos
-                                             cgroup.
-
-  --[no-]strict                              If strict=true, any and all recovery errors are considered fatal.
-                                             If strict=false, any expected errors (e.g., slave cannot recover
-                                             information about an executor, because the slave died right before
-                                             the executor registered.) during recovery are ignored and as much
-                                             state as possible is recovered.
-                                             (default: true)
-
-  --[no-]switch_user                         Whether to run tasks as the user who
-                                             submitted them rather than the user running
-                                             the slave (requires setuid permission) (default: true)
 
-  --work_dir=VALUE                           Where to place framework work directories
-                                             (default: /tmp/mesos)
-</code></pre>
+<p><em>Optional Flags</em></p>
 
-<h2>Mesos Build Configuration Options</h2>
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+  <tr>
+    <td>
+      --attributes=VALUE
+    </td>
+    <td>
+      Attributes of machine, in the form:
+      <p/>
+      <code>rack:2</code> or <code>'rack:2;u:1'</code>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]cgroups_enable_cfs
+    </td>
+    <td>
+      Cgroups feature flag to enable hard limits on CPU resources
+      via the CFS bandwidth limiting subfeature.
+      (default: false)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --cgroups_hierarchy=VALUE
+    </td>
+    <td>
+      The path to the cgroups hierarchy root
+      (default: /sys/fs/cgroup)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]cgroups_limit_swap
+    </td>
+    <td>
+      Cgroups feature flag to enable memory limits on both memory and
+      swap instead of just memory.
+      (default: false)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --cgroups_root=VALUE
+    </td>
+    <td>
+      Name of the root cgroup
+      (default: mesos)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --cgroups_subsystems=VALUE
+    </td>
+    <td>
+      This flag has been deprecated and is no longer used,
+      please update your flags
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]checkpoint
+    </td>
+    <td>
+      This flag is deprecated and will be removed in a future release.
+      Whether to checkpoint slave and frameworks information
+      to disk. This enables a restarted slave to recover
+      status updates and reconnect with (--recover=reconnect) or
+      kill (--recover=cleanup) old executors (default: true)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --containerizer_path=VALUE
+    </td>
+    <td>
+      The path to the external containerizer executable used when
+      external isolation is activated (--isolation=external).
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --containerizers=VALUE
+    </td>
+    <td>
+      Comma separated list of containerizer implementations
+      to compose in order to provide containerization.
+      <p/>
+      Available options are 'mesos', 'external', and
+      'docker' (on Linux). The order the containerizers
+      are specified is the order they are tried
+      (--containerizers=mesos).
+      (default: mesos)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --credential=VALUE
+    </td>
+    <td>
+      Either a path to a text with a single line
+      containing 'principal' and 'secret' separated by whitespace.
+      <p/>
+      Or a path containing the JSON formatted information used for one credential.
+      <p/>
+      Path could be of the form <code>file:///path/to/file< code> or <code>/path/to/file</code>.
+      <p/>
+      JSON file example:
+<pre><code>{
+  "principal": "username",
+  "secret": "secret"
+}</code></pre>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --default_container_image=VALUE
+    </td>
+    <td>
+      The default container image to use if not specified by a task,
+      when using external containerizer.
+
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --default_container_info=VALUE
+    </td>
+    <td>
+      JSON formatted ContainerInfo that will be included into
+      any ExecutorInfo that does not specify a ContainerInfo.
+      <p/>
+      See the ContainerInfo protobuf in mesos.proto for
+      the expected format.
+      <p/>
+      Example:
+<pre><code>{
+  "type": "MESOS",
+  "volumes": [
+    {
+      "host_path": "./.private/tmp",
+      "container_path": "/tmp",
+      "mode": "RW"
+    }
+  ]
+}</code></pre>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --default_role=VALUE
+    </td>
+    <td>
+      Any resources in the --resources flag that
+      omit a role, as well as any resources that
+      are not present in --resources but that are
+      automatically detected, will be assigned to
+      this role. (default: *)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --disk_watch_interval=VALUE
+    </td>
+    <td>
+      Periodic time interval (e.g., 10secs, 2mins, etc)
+      to check the disk usage (default: 1mins)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --docker=VALUE
+    </td>
+    <td>
+      The absolute path to the docker executable for docker
+      containerizer.
+      (default: docker)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --docker_remove_delay=VALUE
+    </td>
+    <td>
+      The amount of time to wait before removing docker containers
+      (e.g., 3days, 2weeks, etc).
+      (default: 6hrs)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --docker_sandbox_directory=VALUE
+    </td>
+    <td>
+      The absolute path for the directory in the container where the
+      sandbox is mapped to.
+      (default: /mnt/mesos/sandbox)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --executor_registration_timeout=VALUE
+    </td>
+    <td>
+      Amount of time to wait for an executor
+      to register with the slave before considering it hung and
+      shutting it down (e.g., 60secs, 3mins, etc) (default: 1mins)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --executor_shutdown_grace_period=VALUE
+    </td>
+    <td>
+      Amount of time to wait for an executor
+      to shut down (e.g., 60secs, 3mins, etc) (default: 5secs)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --frameworks_home=VALUE
+    </td>
+    <td>
+      Directory path prepended to relative executor URIs (default: )
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --gc_delay=VALUE
+    </td>
+    <td>
+      Maximum amount of time to wait before cleaning up
+      executor directories (e.g., 3days, 2weeks, etc).
+      <p/>
+      Note that this delay may be shorter depending on
+      the available disk usage. (default: 1weeks)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --hadoop_home=VALUE
+    </td>
+    <td>
+      Path to find Hadoop installed (for
+      fetching framework executors from HDFS)
+      (no default, look for HADOOP_HOME in
+      environment or find hadoop on PATH) (default: )
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --hostname=VALUE
+    </td>
+    <td>
+      The hostname the slave should report.
+      <p/>
+      If left unset, the hostname is resolved from the IP address
+      that the slave binds to.
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --isolation=VALUE
+    </td>
+    <td>
+      Isolation mechanisms to use, e.g., 'posix/cpu,posix/mem', or
+      'cgroups/cpu,cgroups/mem', or network/port_mapping
+      (configure with flag: --with-network-isolator to enable),
+      or 'external', or load an alternate isolator module using
+      the <code>--modules</code> flag. (default: posix/cpu,posix/mem)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --launcher_dir=VALUE
+    </td>
+    <td>
+      Directory path of Mesos binaries (default: /usr/local/lib/mesos)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --modules=VALUE
+    </td>
+    <td>
+      List of modules to be loaded and be available to the internal
+      subsystems.
+      <p/>
+      Use <code>--modules=filepath</code> to specify the list of modules via a
+      file containing a JSON formatted string. 'filepath' can be
+      of the form <code>file:///path/to/file</code> or <code>/path/to/file</code>.
+      <p/>
+      Use <code>--modules="{...}"</code> to specify the list of modules inline.
+      <p/>
+      JSON file example:
+<pre><code>
+{
+  "libraries": [
+    {
+      "file": "/path/to/libfoo.so",
+      "modules": [
+        {
+          "name": "org_apache_mesos_bar",
+          "parameters": [
+            {
+              "key": "X",
+              "value": "Y"
+            }
+          ]
+        },
+        {
+          "name": "org_apache_mesos_baz"
+        }
+      ]
+    },
+    {
+      "name": "qux",
+      "modules": [
+        {
+          "name": "org_apache_mesos_norf"
+        }
+      ]
+    }
+  ]
+}</code></pre>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --perf_duration=VALUE
+    </td>
+    <td>
+      Duration of a perf stat sample. The duration must be less
+      that the perf_interval. (default: 10secs)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --perf_events=VALUE
+    </td>
+    <td>
+      List of command-separated perf events to sample for each container
+      when using the perf_event isolator. Default is none.
+      <p/>
+      Run command 'perf list' to see all events. Event names are
+      sanitized by downcasing and replacing hyphens with underscores
+      when reported in the PerfStatistics protobuf, e.g., cpu-cycles
+      becomes cpu_cycles; see the PerfStatistics protobuf for all names.
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --perf_interval=VALUE
+    </td>
+    <td>
+      Interval between the start of perf stat samples. Perf samples are
+      obtained periodically according to perf_interval and the most
+      recently obtained sample is returned rather than sampling on
+      demand. For this reason, perf_interval is independent of the
+      resource monitoring interval (default: 1mins)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --recover=VALUE
+    </td>
+    <td>
+      Whether to recover status updates and reconnect with old executors.
+      <p/>
+      Valid values for 'recover' are
+      <p/>
+      reconnect: Reconnect with any old live executors.
+      <p/>
+      cleanup  : Kill any old live executors and exit.
+      <p/>
+      Use this option when doing an incompatible slave
+      or executor upgrade!).
+      <p/>
+      NOTE: If checkpointed slave doesn't exist, no recovery is performed
+      and the slave registers with the master as a new slave. (default: reconnect)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --recovery_timeout=VALUE
+    </td>
+    <td>
+      Amount of time alloted for the slave to recover. If the slave takes
+      longer than recovery_timeout to recover, any executors that are
+      waiting to reconnect to the slave will self-terminate.
+      <p/>
+      NOTE: This flag is only applicable when checkpoint is enabled.
+      (default: 15mins)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --registration_backoff_factor=VALUE
+    </td>
+    <td>
+      Slave initially picks a random amount of time between [0, b], where
+      b = registration_backoff_factor, to (re-)register with a new master.
+      <p/>
+      Subsequent retries are exponentially backed off based on this
+      interval (e.g., 1st retry uses a random value between [0, b * 2^1],
+      2nd retry between [0, b * 2^2], 3rd retry between [0, b * 2^3] etc)
+      up to a maximum of 1mins (default: 1secs)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --resource_monitoring_interval=VALUE
+    </td>
+    <td>
+      Periodic time interval for monitoring executor
+      resource usage (e.g., 10secs, 1min, etc) (default: 1secs)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --resources=VALUE
+    </td>
+    <td>
+      Total consumable resources per slave, in the form
+      </p>
+      <code>name(role):value;name(role):value...</code>.
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --slave_subsystems=VALUE
+    </td>
+    <td>
+      List of comma-separated cgroup subsystems to run the slave binary
+      in, e.g., <code>memory,cpuacct</code>. The default is none.
+      Present functionality is intended for resource monitoring and
+      no cgroup limits are set, they are inherited from the root mesos
+      cgroup.
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]strict
+    </td>
+    <td>
+      If strict=true, any and all recovery errors are considered fatal.
+      <p/>
+      If strict=false, any expected errors (e.g., slave cannot recover
+      information about an executor, because the slave died right before
+      the executor registered.) during recovery are ignored and as much
+      state as possible is recovered.
+      (default: true)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]switch_user
+    </td>
+    <td>
+      Whether to run tasks as the user who
+      submitted them rather than the user running
+      the slave (requires setuid permission) (default: true)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --work_dir=VALUE
+    </td>
+    <td>
+      Directory path to place framework work directories
+      (default: /tmp/mesos)
+    </td>
+  </tr>
+</table>
 
-<p>The configure script has the following options:</p>
 
-<pre><code>To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
+<h2>Mesos Build Configuration Options</h2>
 
-Defaults for the options are specified in brackets.
+<h3>The configure script has the following flags for optional features:</h3>
 
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print `checking...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for `--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or `..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [/usr/local]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, `make install' will install all the files in
-`/usr/local/bin', `/usr/local/lib' etc.  You can specify
-an installation prefix other than `/usr/local' using `--prefix',
-for instance `--prefix=$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/mesos]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-  --target=TARGET   configure for building compilers for TARGET [HOST]
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --disable-java          don't build Java bindings
-  --disable-python        don't build Python bindings
-  --disable-optimize      don't try to compile with optimizations
-  --disable-bundled       build against preinstalled dependencies instead of
-                          bundled libraries
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
-  --with-zookeeper[=DIR]  excludes building and using the bundled ZooKeeper
-                          package in lieu of an installed version at a
-                          location prefixed by the given path
-  --with-leveldb[=DIR]    excludes building and using the bundled LevelDB
-                          package in lieu of an installed version at a
-                          location prefixed by the given path
-  --without-cxx11         builds Mesos without C++11 support (deprecated)
-  --with-network-isolator builds the network isolator
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L&lt;lib dir&gt; if you have libraries in a
-              nonstandard directory &lt;lib dir&gt;
-  LIBS        libraries to pass to the linker, e.g. -l&lt;library&gt;
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I&lt;include dir&gt; if
-              you have headers in a nonstandard directory &lt;include dir&gt;
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CPP         C preprocessor
-  CXXCPP      C++ preprocessor
-  JAVA_HOME   location of Java Development Kit (JDK)
-  JAVA_CPPFLAGS
-              preprocessor flags for JNI
-  JAVA_JVM_LIBRARY
-              full path to libjvm.so
-  MAVEN_HOME  looks for mvn at MAVEN_HOME/bin/mvn
-  PYTHON      which Python interpreter to use
-  PYTHON_VERSION
-              The installed Python version to use, for example '2.3'. This
-              string will be appended to the Python interpreter canonical
-              name.
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+  <tr>
+    <td>
+      --enable-shared[=PKGS]
+    </td>
+    <td>
+      build shared libraries [default=yes]
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --enable-static[=PKGS]
+    </td>
+    <td>
+      build static libraries [default=yes]
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --enable-fast-install[=PKGS]
+    </td>
+    <td>
+
+      optimize for fast installation [default=yes]
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --disable-libtool-lock
+    </td>
+    <td>
+      avoid locking (might break parallel builds)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --disable-java
+    </td>
+    <td>
+      don't build Java bindings
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --disable-python
+    </td>
+    <td>
+      don't build Python bindings
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --enable-debug
+    </td>
+    <td>
+      enable debugging. If CFLAGS/CXXFLAGS are set, this
+      option won't change them default: no
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --enable-optimize
+    </td>
+    <td>
+      enable optimizations. If CFLAGS/CXXFLAGS are set,
+      this option won't change them default: no
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --disable-bundled
+    </td>
+    <td>
+      build against preinstalled dependencies instead of
+      bundled libraries
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --disable-bundled-distribute
+    </td>
+    <td>
+
+      excludes building and using the bundled distribute
+      package in lieu of an installed version in
+      PYTHONPATH
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --disable-bundled-pip
+    </td>
+    <td>
+      excludes building and using the bundled pip package
+      in lieu of an installed version in PYTHONPATH
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --disable-bundled-wheel
+    </td>
+    <td>
+      excludes building and using the bundled wheel
+      package in lieu of an installed version in
+      PYTHONPATH
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --disable-python-dependency-install
+    </td>
+    <td>
+
+      when the python packages are installed during make
+      install, no external dependencies are downloaded or
+      installed
+    </td>
+  </tr>
+</table>
+
+
+<h3>The configure script has the following flags for optional packages:</h3>
+
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+  <tr>
+    <td>
+      --with-gnu-ld
+    </td>
+    <td>
+      assume the C compiler uses GNU ld [default=no]
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-sysroot=DIR
+    </td>
+    <td>
+      Search for dependent libraries within DIR
+      (or the compiler's sysroot if not specified).
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-zookeeper[=DIR]
+    </td>
+    <td>
+      excludes building and using the bundled ZooKeeper
+      package in lieu of an installed version at a
+      location prefixed by the given path
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-leveldb[=DIR]
+    </td>
+    <td>
+      excludes building and using the bundled LevelDB
+      package in lieu of an installed version at a
+      location prefixed by the given path
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-glog[=DIR]
+    </td>
+    <td>
+      excludes building and using the bundled glog package
+      in lieu of an installed version at a location
+      prefixed by the given path
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-protobuf[=DIR]
+    </td>
+    <td>
+      excludes building and using the bundled protobuf
+      package in lieu of an installed version at a
+      location prefixed by the given path
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-gmock[=DIR]
+    </td>
+    <td>
+      excludes building and using the bundled gmock
+      package in lieu of an installed version at a
+      location prefixed by the given path
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-curl=[=DIR]
+    </td>
+    <td>
+      specify where to locate the curl library
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-sasl=[=DIR]
+    </td>
+    <td>
+      specify where to locate the sasl2 library
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-zlib=[=DIR]
+    </td>
+    <td>
+      specify where to locate the zlib library
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-apr=[=DIR]
+    </td>
+    <td>
+      specify where to locate the apr-1 library
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-svn=[=DIR]
+    </td>
+    <td>
+      specify where to locate the svn-1 library
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --with-network-isolator
+    </td>
+    <td>
+      builds the network isolator
+    </td>
+  </tr>
+</table>
+
+
+<h3>Some influential environment variables for configure script:</h3>
+
+<p>Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.</p>
+
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+  <tr>
+    <td>
+      JAVA_HOME
+    </td>
+    <td>
+      location of Java Development Kit (JDK)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      JAVA_CPPFLAGS
+    </td>
+    <td>
+      preprocessor flags for JNI
+    </td>
+  </tr>
+  <tr>
+    <td>
+      JAVA_JVM_LIBRARY
+    </td>
+    <td>
+      full path to libjvm.so
+    </td>
+  </tr>
+  <tr>
+    <td>
+      MAVEN_HOME
+    </td>
+    <td>
+      looks for mvn at MAVEN_HOME/bin/mvn
+    </td>
+  </tr>
+  <tr>
+    <td>
+      PROTOBUF_JAR
+    </td>
+    <td>
+      full path to protobuf jar on prefixed builds
+    </td>
+  </tr>
+  <tr>
+    <td>
+      PYTHON
+    </td>
+    <td>
+      which Python interpreter to use
+    </td>
+  </tr>
+  <tr>
+    <td>
+      PYTHON_VERSION
+    </td>
+    <td>
+      The installed Python version to use, for example '2.3'. This
+      string will be appended to the Python interpreter canonical
+      name.
+    </td>
+  </tr>
+</table>
 
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-</code></pre>
 
 	</div>
 </div>

Added: mesos/site/publish/documentation/external-containerizer/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/external-containerizer/index.html?rev=1638021&view=auto
==============================================================================
--- mesos/site/publish/documentation/external-containerizer/index.html (added)
+++ mesos/site/publish/documentation/external-containerizer/index.html Tue Nov 11 04:11:00 2014
@@ -0,0 +1,645 @@
+<!DOCTYPE html>
+<!--
+
+		 ______                           __                
+		/\  _  \                         /\ \               
+		\ \ \L\ \  _____      __      ___\ \ \___      __   
+		 \ \  __ \/\ '__`\  /'__`\   /'___\ \  _ `\  /'__`\ 
+		  \ \ \/\ \ \ \L\ \/\ \L\.\_/\ \__/\ \ \ \ \/\  __/ 
+		   \ \_\ \_\ \ ,__/\ \__/.\_\ \____\\ \_\ \_\ \____\
+		    \/_/\/_/\ \ \/  \/__/\/_/\/____/ \/_/\/_/\/____/
+		             \ \_\                                  
+		              \/_/                                  
+                                                    
+		       /'\_/`\                                      
+		      /\      \     __    ____    ___     ____      
+		      \ \ \__\ \  /'__`\ /',__\  / __`\  /',__\     
+		       \ \ \_/\ \/\  __//\__, `\/\ \L\ \/\__, `\    
+		        \ \_\\ \_\ \____\/\____/\ \____/\/\____/    
+		         \/_/ \/_/\/____/\/___/  \/___/  \/___/     
+
+-->
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+		    <meta name="description" content="">
+		    <meta name="author" content="">
+
+		    <!-- Le styles -->
+				<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
+		    
+		    <link href="../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" />
+				
+				
+			
+			<!-- Google Analytics Magic -->
+			<script type="text/javascript">
+			  var _gaq = _gaq || [];
+			  _gaq.push(['_setAccount', 'UA-20226872-1']);
+			  _gaq.push(['_setDomainName', 'apache.org']);
+			  _gaq.push(['_trackPageview']);
+
+			  (function() {
+			    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+			  })();
+			</script>
+    </head>
+    <body>
+			<!-- magical breadcrumbs -->
+			<div class="topnav">
+			<ul class="breadcrumb">
+			  <li>
+					<div class="dropdown">
+					  <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
+					  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+							<li><a href="http://www.apache.org">Apache Homepage</a></li>
+							<li><a href="http://www.apache.org/licenses/">License</a></li>
+					  	<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
+					  	<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+							<li><a href="http://www.apache.org/security/">Security</a></li>
+					  </ul>
+					</div>
+				</li>
+				<li><a href="http://mesos.apache.org">Apache Mesos</a></li>
+				
+				
+					<li><a href="/documentation
+/">Documentation
+</a></li>
+				
+				
+			</ul><!-- /breadcrumb -->
+			</div>
+			
+			<!-- navbar excitement -->
+	    <div class="navbar navbar-static-top" role="navigation">
+	      <div class="navbar-inner">
+	        <div class="container">
+						<a href="/" class="logo"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+					<div class="nav-collapse">
+						<ul class="nav nav-pills navbar-right">
+						  <li><a href="/gettingstarted/">Getting Started</a></li>
+						  <li><a href="/documentation/latest/">Documentation</a></li>
+						  <li><a href="/downloads/">Downloads</a></li>
+						  <li><a href="/community/">Community</a></li>
+						</ul>
+					</div>
+	        </div>
+	      </div>
+	    </div><!-- /.navbar -->
+
+      <div class="container">
+
+			<div class="row-fluid">
+	<div class="col-md-4">
+		<h4>If you're new to Mesos</h4>
+		<p>See the <a href="/gettingstarted/">getting started</a> page for more information about downloading, building, and deploying Mesos.</p>
+		
+		<h4>If you'd like to get involved or you're looking for support</h4>
+		<p>See our <a href="/community/">community</a> page for more details.</p>
+	</div>
+	<div class="col-md-8">
+		<h1>External Containerizer</h1>
+
+<ul>
+<li>EC = external containerizer. A part of the mesos slave that provides
+an API for containerizing via external plugin executables.</li>
+<li>ECP = external containerizer program. An external plugin executable
+implementing the actual containerizing by interfacing with a
+containerizing system (e.g. Docker).</li>
+</ul>
+
+
+<h1>Containerizing</h1>
+
+<h1>General Overview</h1>
+
+<p>EC invokes ECP as a shell process, passing the command as a parameter
+to the ECP executable. Additional data is exhanged via stdin and
+stdout.</p>
+
+<p>The ECP is expected to return a zero exit code for all commands it was
+able to process. A non-zero status code signals an error. Below you
+will find an overview of the commands that have to be implemented by
+an ECP, as well as their invocation scheme.</p>
+
+<p>The ECP is expected to be using stderr for state info and displaying
+additional debug information. That information is getting logged to
+a file, see <a href="#sandbox">Enviroment: <strong>Sandbox</strong></a>.</p>
+
+<h3>Call and communication scheme</h3>
+
+<p>Interface describing the functions an ECP has to implement via
+command calls. Many invocations on the ECP will also pass a
+protobuf message along via stdin. Some invocations on the ECP also
+expect to deliver a result protobuf message back via stdout.
+All protobuf messages are prefixed by their original length -
+this is sometimes referred to as &ldquo;Record-IO&rdquo;-format. See
+<a href="#record-io-deserializing-example">Record-IO De/Serializing Example</a>.</p>
+
+<p><strong>COMMAND &lt; INPUT-PROTO > RESULT-PROTO</strong></p>
+
+<ul>
+<li><code>launch &lt; containerizer::Launch</code></li>
+<li><code>update &lt; containerizer::Update</code></li>
+<li><code>usage &lt; containerizer::Usage &gt; mesos::ResourceStatistics</code></li>
+<li><code>wait &lt; containerizer::Wait &gt; containerizer::Termination</code></li>
+<li><code>destroy &lt; containerizer::Destroy</code></li>
+<li><code>containers &gt; containerizer::Containers</code></li>
+<li><code>recover</code></li>
+</ul>
+
+
+<h1>Command Ordering</h1>
+
+<h2>Make no assumptions</h2>
+
+<p>Commands may pretty much come in any order. There is only one
+exception to this rule; when launching a task, the EC will make sure
+that the ECP first receives a <code>launch</code> on that specific container, all
+other commands are queued until <code>launch</code> returns from the ECP.</p>
+
+<h1>Use Cases</h1>
+
+<h2>Task Launching EC / ECP Overview</h2>
+
+<ul>
+<li>EC invokes <code>launch</code> on the ECP.</li>
+<li>Along with that call, the ECP will receive a containerizer::Launch
+protobuf message via stdin.</li>
+<li>ECP now makes sure the executor gets started.
+<strong>Note</strong> that <code>launch</code> is not supposed to block. It should return
+immediately after triggering the executor/command - that could be done
+via fork-exec within the ECP.</li>
+<li>EC invokes <code>wait</code> on the ECP.</li>
+<li>Along with that call, the ECP will receive a containerizer::Wait
+protobuf message via stdin.</li>
+<li>ECP now blocks until the launched command is reaped - that could be
+implemented via waitpid within the ECP.</li>
+<li>Once the command is reaped, the ECP should deliver a
+containerizer::Termination protobuf message via stdout, back to the
+EC.</li>
+</ul>
+
+
+<h2>Container Lifecycle Sequence Diagrams</h2>
+
+<h3>Container Launching</h3>
+
+<p>A container is in a staging state and now gets started and observed
+until it gets into a final state.</p>
+
+<p><img src="images/ec_launch_seqdiag.png?raw=true" alt="Container Launching Scheme" /></p>
+
+<h3>Container Running</h3>
+
+<p>A container has gotten launched at some point and now is considered
+being in a non terminal state by the slave. The following commands
+will get triggered multiple times at the ECP over the lifetime of a
+container. Their order however is not determined.</p>
+
+<p><img src="images/ec_lifecycle_seqdiag.png?raw=true" alt="Container Running Scheme" /></p>
+
+<h3>Resource Limitation</h3>
+
+<p>While a container is active, a resource limitation was identified
+(e.g. out of memory) by the ECP isolation mechanism of choice.</p>
+
+<p><img src="images/ec_kill_seqdiag.png?raw=true" alt="Resource Limitation Scheme" /></p>
+
+<h2>Slave Recovery Overview</h2>
+
+<ul>
+<li>Slave recovers via check pointed state.</li>
+<li>EC invokes <code>recover</code> on the ECP - there is no protobuf message sent
+or expected as a result from this command.</li>
+<li>The ECP may try to recover internal states via its own failover
+mechanisms, if needed.</li>
+<li>After <code>recover</code> returns, the EC will invoke <code>containers</code> on the ECP.</li>
+<li>The ECP should return Containers which is a list of currently
+active containers.
+<strong>Note</strong> these containers are known to the ECP but might in fact
+partially be unknown to the slave (e.g. slave failed after launch but
+before or within wait) - those containers are considered to be
+orphans.</li>
+<li>The EC now compares the list of slave known containers to those
+listed within <code>Containers</code>. For each orphan it identifies, the slave
+will invoke a <code>wait</code> followed by a <code>destroy</code> on the ECP for those
+containers.</li>
+<li>Slave will now call <code>wait</code> on the ECP (via EC) for all recovered
+containers. This does once again put <code>wait</code> into the position of the
+ultimate command reaper.</li>
+</ul>
+
+
+<h2>Slave Recovery Sequence Diagram</h2>
+
+<h3>Recovery</h3>
+
+<p>While containers are active, the slave fails over.</p>
+
+<p><img src="images/ec_recover_seqdiag.png?raw=true" alt="Recovery Scheme" /></p>
+
+<h3>Orphan Destruction</h3>
+
+<p>Containers identified by the ECP as being active but not slave state
+recoverable are getting terminated.</p>
+
+<p><img src="images/ec_orphan_seqdiag.png?raw=true" alt="Orphan Destruction Scheme" /></p>
+
+<h1>Command Details</h1>
+
+<h2>launch</h2>
+
+<h3>Start the containerized executor</h3>
+
+<p>Hands over all information the ECP needs for launching a task
+via an executor.
+This call should not wait for the executor/command to return. The
+actual reaping of the containerized command is done via the <code>wait</code>
+call.</p>
+
+<pre><code>launch &lt; containerizer::Launch
+</code></pre>
+
+<p>This call receives the containerizer::Launch protobuf via stdin.</p>
+
+<pre><code>/**
+ * Encodes the launch command sent to the external containerizer
+ * program.
+ */
+message Launch {
+  required ContainerID container_id = 1;
+  optional TaskInfo task_info = 2;
+  optional ExecutorInfo executor_info = 3;
+  optional string directory = 4;
+  optional string user = 5;
+  optional SlaveID slave_id = 6;
+  optional string slave_pid = 7;
+  optional bool checkpoint = 8;
+}
+</code></pre>
+
+<p>This call does not return any data via stdout.</p>
+
+<h2>wait</h2>
+
+<h3>Gets information on the containerized executor&rsquo;s Termination</h3>
+
+<p>Is expected to reap the executor/command. This call should block
+until the executor/command has terminated.</p>
+
+<pre><code>wait &lt; containerizer::Wait &gt; containerizer::Termination
+</code></pre>
+
+<p>This call receives the containerizer::Wait protobuf via stdin.</p>
+
+<pre><code>/**
+ * Encodes the wait command sent to the external containerizer
+ * program.
+ */
+message Wait {
+  required ContainerID container_id = 1;
+}
+</code></pre>
+
+<p>This call is expected to return containerizer::Termination via stdout.</p>
+
+<pre><code>/**
+ * Information about a container termination, returned by the
+ * containerizer to the slave.
+ */
+message Termination {
+  // A container may be killed if it exceeds its resources; this will
+  // be indicated by killed=true and described by the message string.
+  required bool killed = 1;
+  required string message = 2;
+
+  // Exit status of the process.
+  optional int32 status = 3;
+}
+</code></pre>
+
+<p>The Termination attribute <code>killed</code> is to be set only when the
+containerizer or the underlying isolation had to enforce a limitation
+by killing the task (e.g. task exceeded suggested memory limit).</p>
+
+<h2>update</h2>
+
+<h3>Updates the container&rsquo;s resource limits</h3>
+
+<p>Is sending (new) resource constraints for the given container.
+Resource constraints onto a container may vary over the lifetime of
+the containerized task.</p>
+
+<pre><code>update &lt; containerizer::Update
+</code></pre>
+
+<p>This call receives the containerizer::Update protobuf via stdin.</p>
+
+<pre><code>/**
+ * Encodes the update command sent to the external containerizer
+ * program.
+ */
+message Update {
+  required ContainerID container_id = 1;
+  repeated Resource resources = 2;
+}
+</code></pre>
+
+<p>This call does not return any data via stdout.</p>
+
+<h2>usage</h2>
+
+<h3>Gathers resource usage statistics for a containerized task</h3>
+
+<p>Is used for polling the current resource uses for the given container.</p>
+
+<pre><code>usage &lt; containerizer::Usage &gt; mesos::ResourceStatistics
+</code></pre>
+
+<p>This call received the containerizer::Usage protobuf via stdin.</p>
+
+<pre><code>/**
+ * Encodes the usage command sent to the external containerizer
+ * program.
+ */
+message Usage {
+  required ContainerID container_id = 1;
+}
+</code></pre>
+
+<p>This call is expected to return mesos::ResourceStatistics via stdout.</p>
+
+<pre><code>/*
+ * A snapshot of resource usage statistics.
+ */
+message ResourceStatistics {
+  required double timestamp = 1; // Snapshot time, in seconds since the Epoch.
+
+  // CPU Usage Information:
+  // Total CPU time spent in user mode, and kernel mode.
+  optional double cpus_user_time_secs = 2;
+  optional double cpus_system_time_secs = 3;
+
+  // Number of CPUs allocated.
+  optional double cpus_limit = 4;
+
+  // cpu.stat on process throttling (for contention issues).
+  optional uint32 cpus_nr_periods = 7;
+  optional uint32 cpus_nr_throttled = 8;
+  optional double cpus_throttled_time_secs = 9;
+
+  // Memory Usage Information:
+  optional uint64 mem_rss_bytes = 5; // Resident Set Size.
+
+  // Amount of memory resources allocated.
+  optional uint64 mem_limit_bytes = 6;
+
+  // Broken out memory usage information (files, anonymous, and mmaped files)
+  optional uint64 mem_file_bytes = 10;
+  optional uint64 mem_anon_bytes = 11;
+  optional uint64 mem_mapped_file_bytes = 12;
+}
+</code></pre>
+
+<h2>destroy</h2>
+
+<h3>Terminates the containerized executor</h3>
+
+<p>Is used in rare situations, like for graceful slave shutdown
+but also in slave fail over scenarios - see Slave Recovery for more.</p>
+
+<pre><code>destroy &lt; containerizer::Destroy
+</code></pre>
+
+<p>This call receives the containerizer::Destroy protobuf via stdin.</p>
+
+<pre><code>/**
+ * Encodes the destroy command sent to the external containerizer
+ * program.
+ */
+message Destroy {
+  required ContainerID container_id = 1;
+}
+</code></pre>
+
+<p>This call does not return any data via stdout.</p>
+
+<h2>containers</h2>
+
+<h3>Gets all active container-id&rsquo;s</h3>
+
+<p>Returns all container identifiers known to be currently active.</p>
+
+<pre><code>containers &gt; containerizer::Containers
+</code></pre>
+
+<p>This call does not receive any additional data via stdin.</p>
+
+<p>This call is expected to pass containerizer::Containers back via
+stdout.</p>
+
+<pre><code>/**
+ * Information on all active containers returned by the containerizer
+ * to the slave.
+ */
+message Containers {
+  repeated ContainerID containers = 1;
+}
+</code></pre>
+
+<h2>recover</h2>
+
+<h3>Internal ECP state recovery</h3>
+
+<p>Allows the ECP to do a state recovery on its own. If the ECP
+uses state check-pointing e.g. via file system, then this call would
+be a good moment to de-serialize that state information. Make sure you
+also see <a href="#slave-recovery-overview">Slave Recovery Overview</a> for more.</p>
+
+<pre><code>recover
+</code></pre>
+
+<p>This call does not receive any additional data via stdin.
+No returned data via stdout.</p>
+
+<h3>Protobuf Message Definitions</h3>
+
+<p>For possibly more up-to-date versions of the above mentioned protobufs
+as well as protobuf messages referenced by them, please check:</p>
+
+<ul>
+<li><p>containerizer::XXX are defined within
+include/mesos/containerizer/containerizer.proto.</p></li>
+<li><p>mesos::XXX are defined within include/mesos/mesos.proto.</p></li>
+</ul>
+
+
+<h1>Environment</h1>
+
+<h2><strong>Sandbox</strong></h2>
+
+<p>A sandbox environment is formed by <code>cd</code> into the work-directory of the
+executor as well as a stderr redirect into the executor&rsquo;s &ldquo;stderr&rdquo;
+log-file.
+<strong>Note</strong> not <strong>all</strong> invocations have a complete sandbox environment.</p>
+
+<h2>Addional Environment Variables</h2>
+
+<p>Additionally, there are a few new environment variables set when
+invoking the ECP.</p>
+
+<ul>
+<li><p>MESOS_LIBEXEC_DIRECTORY = path to mesos-executor, mesos-usage, &hellip;
+This information is always present.</p></li>
+<li><p>MESOS_WORK_DIRECTORY = slave work directory. This should be used for
+distinguishing slave instances.
+This information is always present.</p></li>
+</ul>
+
+
+<p><strong>Note</strong> that this is specifically helpful for being able to tie a set
+of containers to a specific slave instance, thus allowing proper
+recovery when needed.</p>
+
+<ul>
+<li>MESOS_DEFAULT_CONTAINER_IMAGE = default image as provided via slave
+flags (default_container_image). This variable is provided only in
+calls to <code>launch</code>.</li>
+</ul>
+
+
+<h1>Debugging</h1>
+
+<h2>Enhanced Verbosity Logging</h2>
+
+<p>For receiving an increased level of status information from the EC
+use the GLOG verbosity level. Prefix your mesos startup call by
+setting the level to a value higher than or equal to two.</p>
+
+<p><code>GLOG_v=2 ./bin/mesos-slave --master=[...]</code></p>
+
+<h2>ECP stderr Logging</h2>
+
+<p>All output to stderr of your ECP will get logged to the executor&rsquo;s
+&lsquo;stderr&rsquo; log file.
+The specific location can be extracted from the <a href="#enhanced-verbosity-logging">Enhanced Verbosity
+Logging</a> of the EC.</p>
+
+<p>Example Log Output:</p>
+
+<pre><code>I0603 02:12:34.165662 174215168 external_containerizer.cpp:1083] Invoking external containerizer for method 'launch'
+I0603 02:12:34.165675 174215168 external_containerizer.cpp:1100] calling: [/Users/till/Development/mesos-till/build/src/test-containerizer launch]
+I0603 02:12:34.165678 175824896 slave.cpp:497] Successfully attached file '/tmp/ExternalContainerizerTest_Launch_lP22ci/slaves/20140603-021232-16777343-51377-7591-0/frameworks/20140603-021232-16777343-51377-7591-0000/executors/1/runs/558e0a69-70da-4d71-b4c4-c2820b1d6345'
+I0603 02:12:34.165686 174215168 external_containerizer.cpp:1101] directory: /tmp/ExternalContainerizerTest_Launch_lP22ci/slaves/20140603-021232-16777343-51377-7591-0/frameworks/20140603-021232-16777343-51377-7591-0000/executors/1/runs/558e0a69-70da-4d71-b4c4-c2820b1d6345
+</code></pre>
+
+<p>The stderr output of the ECP for this call is found within the stderr file located in the directory displayed in the last quoted line.</p>
+
+<pre><code>cat /tmp/ExternalContainerizerTest_Launch_lP22ci/slaves/20140603-021232-16777343-51377-7591-0/frameworks/20140603-021232-16777343-51377-7591-0000/executors/1/runs/558e0a69-70da-4d71-b4c4-c2820b1d6345/stderr
+</code></pre>
+
+<h1>Appendix</h1>
+
+<h2>Record-IO Proto Example: Launch</h2>
+
+<p>This is what a properly record-io formatted protobuf looks like.</p>
+
+<p><strong>name:    offset</strong></p>
+
+<ul>
+<li><p>length: 00 - 03 = record length in byte</p></li>
+<li><p>payload: 04 - (length + 4) = protobuf payload</p></li>
+</ul>
+
+
+<p>Example length: 00000240h = 576 byte total protobuf size</p>
+
+<p>Example Hexdump:</p>
+
+<pre><code>00000000:  4002 0000 0a26 0a24 3433 3532 3533 6162 2d64 3234 362d 3437  :@....&amp;.$435253ab-d246-47
+00000018:  6265 2d61 3335 302d 3335 3432 3034 3635 6438 3638 1a81 020a  :be-a350-35420465d868....
+00000030:  030a 0131 2a16 0a04 6370 7573 1000 1a09 0900 0000 0000 0000  :...1*...cpus............
+00000048:  4032 012a 2a15 0a03 6d65 6d10 001a 0909 0000 0000 0000 9040  :@2.**...mem............@
+00000060:  3201 2a2a 160a 0464 6973 6b10 001a 0909 0000 0000 0000 9040  :2.**...disk............@
+00000078:  3201 2a2a 180a 0570 6f72 7473 1001 220a 0a08 0898 f201 1080  :2.**...ports..".........
+00000090:  fa01 3201 2a3a 2a1a 2865 6368 6f20 274e 6f20 7375 6368 2066  :..2.*:*.(echo 'No such f
+000000a8:  696c 6520 6f72 2064 6972 6563 746f 7279 273b 2065 7869 7420  :ile or directory'; exit
+000000c0:  3142 2b0a 2932 3031 3430 3532 362d 3031 3530 3036 2d31 3637  :1B+.)20140526-015006-167
+000000d8:  3737 3334 332d 3535 3430 332d 3632 3536 372d 3030 3030 4a3d  :77343-55403-62567-0000J=
+000000f0:  436f 6d6d 616e 6420 4578 6563 7574 6f72 2028 5461 736b 3a20  :Command Executor (Task:
+00000108:  3129 2028 436f 6d6d 616e 643a 2073 6820 2d63 2027 7768 696c  :1) (Command: sh -c 'whil
+00000120:  6520 7472 7565 203b 2e2e 2e27 2952 0131 22c5 012f 746d 702f  :e true ;...')R.1"../tmp/
+00000138:  4578 7465 726e 616c 436f 6e74 6169 6e65 7269 7a65 7254 6573  :ExternalContainerizerTes
+00000150:  745f 4c61 756e 6368 5f6c 5855 6839 662f 736c 6176 6573 2f32  :t_Launch_lXUh9f/slaves/2
+00000168:  3031 3430 3532 362d 3031 3530 3036 2d31 3637 3737 3334 332d  :0140526-015006-16777343-
+00000180:  3535 3430 332d 3632 3536 372d 302f 6672 616d 6577 6f72 6b73  :55403-62567-0/frameworks
+00000198:  2f32 3031 3430 3532 362d 3031 3530 3036 2d31 3637 3737 3334  :/20140526-015006-1677734
+000001b0:  332d 3535 3430 332d 3632 3536 372d 3030 3030 2f65 7865 6375  :3-55403-62567-0000/execu
+000001c8:  746f 7273 2f31 2f72 756e 732f 3433 3532 3533 6162 2d64 3234  :tors/1/runs/435253ab-d24
+000001e0:  362d 3437 6265 2d61 3335 302d 3335 3432 3034 3635 6438 3638  :6-47be-a350-35420465d868
+000001f8:  2a04 7469 6c6c 3228 0a26 3230 3134 3035 3236 2d30 3135 3030  :*.till2(.&amp;20140526-01500
+00000210:  362d 3136 3737 3733 3433 2d35 3534 3033 2d36 3235 3637 2d30  :6-16777343-55403-62567-0
+00000228:  3a18 736c 6176 6528 3129 4031 3237 2e30 2e30 2e31 3a35 3534  ::.slave(1)@127.0.0.1:554
+00000240:  3033 4000
+</code></pre>
+
+<h2>Record-IO De/Serializing Example</h2>
+
+<p>How to send and receive such record-io formatted message
+using Python</p>
+
+<p><em>taken from src/examples/python/test_containerizer.py</em></p>
+
+<pre><code># Read a data chunk prefixed by its total size from stdin.
+def receive():
+    # Read size (uint32 =&gt; 4 bytes).
+    size = struct.unpack('I', sys.stdin.read(4))
+    if size[0] &lt;= 0:
+        print &gt;&gt; sys.stderr, "Expected protobuf size over stdin. " \
+                         "Received 0 bytes."
+        return ""
+
+    # Read payload.
+    data = sys.stdin.read(size[0])
+    if len(data) != size[0]:
+        print &gt;&gt; sys.stderr, "Expected %d bytes protobuf over stdin. " \
+                         "Received %d bytes." % (size[0], len(data))
+        return ""
+
+    return data
+
+# Write a protobuf message prefixed by its total size (aka recordio)
+# to stdout.
+def send(data):
+    # Write size (uint32 =&gt; 4 bytes).
+    sys.stdout.write(struct.pack('I', len(data)))
+
+    # Write payload.
+    sys.stdout.write(data)
+</code></pre>
+
+	</div>
+</div>
+
+			
+	      <hr>
+
+				<!-- footer -->
+	      <div class="footer">
+	        <p>&copy; 2012-2014 <a href="http://apache.org">The Apache Software Foundation</a>.
+	        Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation.<p>
+	      </div><!-- /footer -->
+
+	    </div> <!-- /container -->
+
+	    <!-- JS -->
+	    <script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
+			<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script>
+    </body>
+</html>
\ No newline at end of file

Modified: mesos/site/publish/documentation/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/index.html?rev=1638021&r1=1638020&r2=1638021&view=diff
==============================================================================
--- mesos/site/publish/documentation/index.html (original)
+++ mesos/site/publish/documentation/index.html Tue Nov 11 04:11:00 2014
@@ -118,6 +118,7 @@
 <ul>
 <li><a href="/documentation/latest/configuration/">Configuration</a> for command-line arguments.</li>
 <li><a href="/documentation/latest/docker-containerizer/">Docker Containerizer</a> for launching a Docker image as a Task, or as an Executor.</li>
+<li><a href="/documentation/latest/external-containerizer/">External Containerizer</a></li>
 <li><a href="/documentation/latest/authorization/">Framework Authorization</a></li>
 <li><a href="/documentation/latest/framework-rate-limiting/">Framework Rate Limiting</a></li>
 <li><a href="/documentation/latest/high-availability/">High Availability</a> for running multiple masters simultaneously.</li>