You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/11/19 20:56:55 UTC
[mesos-site] branch asf-site updated: Updated the website built
from mesos SHA: 05a7caf.
This is an automated email from the ASF dual-hosted git repository.
git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/mesos-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new a2d797c Updated the website built from mesos SHA: 05a7caf.
a2d797c is described below
commit a2d797cf5df2d80db4285a7eadcaa680d53e4804
Author: jenkins <bu...@apache.org>
AuthorDate: Mon Nov 19 20:56:53 2018 +0000
Updated the website built from mesos SHA: 05a7caf.
---
content/blog/feed.xml | 166 +++++++++++++++++-
content/blog/index.html | 4 +
content/blog/mesos-mini/index.html | 348 +++++++++++++++++++++++++++++++++++++
content/sitemap.xml | 4 +
4 files changed, 521 insertions(+), 1 deletion(-)
diff --git a/content/blog/feed.xml b/content/blog/feed.xml
index 020dea1..ed6bb8b 100644
--- a/content/blog/feed.xml
+++ b/content/blog/feed.xml
@@ -4,7 +4,171 @@
<id>http://mesos.apache.org/blog</id>
<link href="http://mesos.apache.org/blog" />
<link href="http://mesos.apache.org/blog/feed.xml" rel="self"/>
- <updated>2018-10-08T00:00:00+00:00</updated>
+ <updated>2018-11-19T00:00:00+00:00</updated>
+ <entry>
+ <id>http://mesos.apache.org/blog/mesos-mini/</id>
+ <link href="/blog/mesos-mini/" />
+ <title>
+ Run Mesos Locally with Mesos Mini Docker Container
+ </title>
+ <updated>2018-11-19T00:00:00+00:00</updated>
+ <author>
+ <name>Jie Yu</name>
+ </author>
+ <content type="html">
+ <p><a href="https://hub.docker.com/r/mesos/mesos-mini/">Mesos Mini</a> is a Docker image maintained by the Apache Mesos community.
+It allows you to test Mesos locally with a simple <code>docker run</code>.</p>
+
+<h1>Why Mesos Mini</h1>
+
+<p>Being able to spin up a local Mesos cluster in Docker can greatly simplify the work in the following scenarios:</p>
+
+<ul>
+<li><em>Demo</em>: Imagine doing a live demo with Mesos in a conference with unstable Wifi.</li>
+<li><em>Framework development</em>: Write end-to-end integration tests for your framework with a local Mesos cluster in a Docker container.
+This can be easily automated in your test suite.</li>
+<li><em>Test new Mesos features</em>: Test new features from Mesos that haven&rsquo;t been released yet.
+You might be able to do that by building Mesos from the source code, but most framework developers do not know how to do it, and it is slow.</li>
+</ul>
+
+
+<p>The idea is similar to <a href="https://github.com/kubernetes/minikube">minikube</a> or <a href="https://github.com/ContainerSolutions/minimesos">minimesos</a>.</p>
+
+<p>However, <a href="https://github.com/ContainerSolutions/minimesos">minimesos</a> is no longer maintained.
+As a result, Apache Mesos community decides to maintain a solution in Mesos repository to simplify CI integrations.</p>
+
+<h1>Get started</h1>
+
+<p>Make sure <a href="https://docs.docker.com/install/">Docker</a> is installed.
+We have tested on both Linux and MacOS.</p>
+
+<p>To create a local Mesos cluster, simply do a <code>docker run</code>:</p>
+
+<pre><code class="bash">$ docker run --rm --privileged -p 5050:5050 -p 5051:5051 -p 8080:8080 mesos/mesos-mini
+</code></pre>
+
+<p>It will launch one Mesos master, one Mesos agent, and one example framework (Marathon) in the Docker container.</p>
+
+<p>You should be able to access Mesos master UI at <code>http://localhost:5050</code>.
+Similarly, you can access Mesos agent at <code>http://localhost:5051</code>.
+Marathon UI can be accessed at <code>http://localhost:8080</code>.</p>
+
+<p>You should be able to launch containers in the local Mesos cluster using Marathon like the following:</p>
+
+<pre><code class="bash">$ cat app.json
+{
+ "id": "test",
+ "cmd": "sleep 1000",
+ "cpus": 1,
+ "mem": 128,
+ "disk": 0,
+ "instances": 1,
+ "container": {
+ "docker": {
+ "image": "alpine"
+ },
+ "type": "DOCKER"
+ },
+ "networks": [
+ {
+ "mode": "host"
+ }
+ ]
+}
+$ curl -X POST -d @app.json -H "Content-type: application/json" http://localhost:8080/v2/apps
+</code></pre>
+
+<p>To stop the local Mesos cluster, please use <code>docker stop</code>.
+All artifacts associated with the local Mesos cluster will be cleaned up when the Docker container stops.</p>
+
+<p>The following Docker image tags are maintained:</p>
+
+<ul>
+<li><code>master</code>: The latest master branch HEAD.</li>
+<li><code>&lt;RELEASE_BRANCH&gt;</code>: The latest release branch HEAD (e.g., <code>1.7.x</code>).</li>
+<li><code>master-&lt;DATE&gt;</code>: The snapshot builds for master branch (e.g., <code>master-2018-11-19</code>).</li>
+<li><code>&lt;RELEASE_BRANCH&gt;-&lt;DATE&gt;</code>: The snapshot builds for release branch (e.g., <code>1.7.x-2018-11-19</code>).</li>
+</ul>
+
+
+<p>Note that there is no support for release branches earlier than <code>1.7.x</code>.
+All future release branches will be supported.</p>
+
+<h1>How is it done?</h1>
+
+<h2>Manage multiple services</h2>
+
+<p>We use <code>systemd</code> to manage multiple daemons in the Mesos Mini Docker container.
+As a result, you can use the following command to restart the Mesos master in the Mesos Mini Docker container:</p>
+
+<pre><code class="bash">$ docker exec &lt;CONTAINER_ID&gt; systemctl restart mesos-master
+</code></pre>
+
+<p>Similarly, you can use that to restart other services (e.g., Mesos agent or Marathon).
+This is very useful for those end-to-end integration tests that want to simulate Mesos master failover.</p>
+
+<h2>Docker Containerizer</h2>
+
+<p>One of the goals of Mesos Mini is to mimic production settings as much as possible.</p>
+
+<p>To allow frameworks to launch Docker containers, we embed a Docker Daemon (i.e., Docker in Docker) in the Mesos Mini Docker container.
+For instance, to view all Docker containers in the Mesos cluster, use the following command on your host:</p>
+
+<pre><code class="bash">$ docker exec &lt;CONTAINER_ID&gt; docker ps
+</code></pre>
+
+<p>The cgroup root for the embedded Docker Daemon has been configured so that the cgroups for the nested Docker containers are properly nested within the Mesos Mini Docker container.
+This ensures that no cgroups traces will be left in the system when the Mesos Mini Docker container finishes.</p>
+
+<h2>Mesos Containerizer (UCR)</h2>
+
+<p>For Mesos Containerizer (UCR), we turn on most of the <a href="https://github.com/apache/mesos/docs/mesos-containerizer.md">isolators</a> that are typically turned on in production environments.
+Similar to Docker daemon, we need to do a few tweaking on cgroups in Mesos Mini Docker container to make sure it does not leave any traces when Mesos Mini Docker container terminates.</p>
+
+<p>For each cgroup subsystem, Docker does a bind mount from the current cgroup to the root of the cgroup subsystem.
+For instance:</p>
+
+<pre><code class="bash">/sys/fs/cgroup/memory/docker/&lt;cid&gt; -&gt; /sys/fs/cgroup/memory
+</code></pre>
+
+<p>This will confuse Mesos agent and UCR because it relies on proc file <code>/proc/&lt;pid&gt;/cgroup</code> to determine the cgroups of a given process, and this proc file is not affected by the bind mount of the cgroups.</p>
+
+<p>To workaround that, we perform the following steps for each cgroup subsystems when bootstrapping the Mesos Mini Docker container to recreates the cgroups layout as if it were on the host.</p>
+
+<pre><code class="bash">$ mkdir -p /sys/fs/cgroup/memory/docker/&lt;cid&gt;
+$ mount --bind /sys/fs/cgroup/memory /sys/fs/cgroup/memory/docker/&lt;cid&gt;
+</code></pre>
+
+<p>And then set Mesos agent <code>--cgroups_root</code> flag to <code>docker/&lt;cid&gt;</code>.</p>
+
+<h1>Maintenance</h1>
+
+<p>The <a href="https://github.com/apache/mesos/tree/master/support/mesos-mini">build scripts</a> for Mesos Mini is hosted in Mesos repository.
+The <a href="https://builds.apache.org/view/M-R/view/Mesos/job/Docker/job/Mini/">Mesos Docker Mini Jenkins CI</a> has been setup to automatically push daily snapshot builds to Docker hub for supported release branches as well as the master branch.</p>
+
+<p>For any bug fix or new features, please follow the <a href="http://mesos.apache.org/community/#contribute-a-patch">Apache Mesos contribution guide</a>.</p>
+
+<h2>Mesos CentOS Docker Image</h2>
+
+<p>In some scenarios, some users might prefer having a Docker image that only has Mesos installed.
+To enable that, we also built a <code>mesos/mesos-centos</code> Docker image.
+The tags are similar to those of Mesos Mini.
+In fact, <code>mesos/mesos-mini</code> uses <code>mesos/mesos-centos</code> as its base image.</p>
+
+<p>The <a href="https://github.com/apache/mesos/tree/master/support/packaging/centos/build-docker-centos.sh">build scripts</a> for Mesos CentOS Docker image is also hosted in Mesos repository.
+The <a href="https://builds.apache.org/view/M-R/view/Mesos/job/Docker/job/CentOS/">Mesos Docker CentOS Jenkins CI</a> has been setup to automatically push daily snapshot builds to Docker hub for supported release branches as well as the master branch.</p>
+
+<h1>Current limitations</h1>
+
+<ul>
+<li>Only one Mesos agent can be launched in the Mesos Mini Docker container.</li>
+<li>Marathon uses in-memory storage instead of ZK.</li>
+<li>SSL is not enabled.</li>
+</ul>
+
+
+ </content>
+ </entry>
<entry>
<id>http://mesos.apache.org/blog/mesos-1-7-0-performance-improvements/</id>
<link href="/blog/mesos-1-7-0-performance-improvements/" />
diff --git a/content/blog/index.html b/content/blog/index.html
index 820eb45..0a1c86a 100644
--- a/content/blog/index.html
+++ b/content/blog/index.html
@@ -102,6 +102,10 @@
</div>
<div class="col-md-9">
<article>
+ <h2><a href="/blog/mesos-mini/">Run Mesos Locally with Mesos Mini Docker Container</a></h2>
+ <p><em>Posted by Jie Yu, November 19, 2018</em></p>
+ </article>
+ <article>
<h2><a href="/blog/mesos-1-7-0-performance-improvements/">Performance Improvements in Mesos 1.7.0</a></h2>
<p><em>Posted by Benjamin Mahler, October 8, 2018</em></p>
</article>
diff --git a/content/blog/mesos-mini/index.html b/content/blog/mesos-mini/index.html
new file mode 100644
index 0000000..96175d1
--- /dev/null
+++ b/content/blog/mesos-mini/index.html
@@ -0,0 +1,348 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>Run Mesos Locally with Mesos Mini Docker Container</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <meta property="og:locale" content="en_US"/>
+ <meta property="og:type" content="website"/>
+ <meta property="og:title" content="Apache Mesos"/>
+ <meta property="og:site_name" content="Apache Mesos"/>
+ <meta property="og:url" content="http://mesos.apache.org/"/>
+ <meta property="og:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/>
+ <meta property="og:description"
+ content="Apache Mesos abstracts resources away from machines,
+ enabling fault-tolerant and elastic distributed systems
+ to easily be built and run effectively."/>
+
+ <meta name="twitter:card" content="summary"/>
+ <meta name="twitter:site" content="@ApacheMesos"/>
+ <meta name="twitter:title" content="Apache Mesos"/>
+ <meta name="twitter:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/>
+ <meta name="twitter:description"
+ content="Apache Mesos abstracts resources away from machines,
+ enabling fault-tolerant and elastic distributed systems
+ to easily be built and run effectively."/>
+
+ <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
+ <link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml">
+ <link href="../../assets/css/main.css" rel="stylesheet" />
+
+
+ <!-- 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">
+ <div class="container">
+ <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="/blog/">Blog</a></li>
+ </ul><!-- /.breadcrumb -->
+ </div><!-- /.container -->
+ </div><!-- /.topnav -->
+
+ <!-- navbar excitement -->
+<div class="navbar navbar-default navbar-static-top" role="navigation">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mesos-menu" aria-expanded="false">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo"/></a>
+ </div><!-- /.navbar-header -->
+
+ <div class="navbar-collapse collapse" id="mesos-menu">
+ <ul class="nav navbar-nav navbar-right">
+ <li><a href="/getting-started/">Getting Started</a></li>
+ <li><a href="/blog/">Blog</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><!-- /#mesos-menu -->
+ </div><!-- /.container -->
+</div><!-- /.navbar -->
+
+<div class="content">
+ <div class="container">
+ <div class="row">
+
+ <div class="col-md-3">
+ <div class="meta">
+ <span class="author">
+ <span class="author_contact">
+ <p><strong>Jie Yu</strong></p>
+ <p><a href="http://twitter.com/jie_yu">@jie_yu</a></p>
+ </span>
+ </span>
+ <p><em>Posted November 19, 2018</em></p>
+ </div>
+
+ <div class="share">
+ <span class="social-share-button"><a href="https://twitter.com/share" class="twitter-share-button" data-via="apachemesos">Tweet</a></span>
+
+ <span><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></span>
+
+ <span><div class="g-plusone" data-size="medium"></div></span>
+
+ <!-- Place this tag after the last +1 button tag. -->
+ <script type="text/javascript">
+ (function() {
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
+ po.src = 'https://apis.google.com/js/plusone.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
+ })();
+ </script>
+
+ <script src="//platform.linkedin.com/in.js" type="text/javascript">
+ lang: en_US
+ </script>
+ <script type="IN/Share" data-counter="right"></script>
+ </div>
+ </div>
+
+ <div class="post col-md-9">
+ <h1>Run Mesos Locally with Mesos Mini Docker Container</h1>
+
+ <p><a href="https://hub.docker.com/r/mesos/mesos-mini/">Mesos Mini</a> is a Docker image maintained by the Apache Mesos community.
+It allows you to test Mesos locally with a simple <code>docker run</code>.</p>
+
+<h1>Why Mesos Mini</h1>
+
+<p>Being able to spin up a local Mesos cluster in Docker can greatly simplify the work in the following scenarios:</p>
+
+<ul>
+<li><em>Demo</em>: Imagine doing a live demo with Mesos in a conference with unstable Wifi.</li>
+<li><em>Framework development</em>: Write end-to-end integration tests for your framework with a local Mesos cluster in a Docker container.
+This can be easily automated in your test suite.</li>
+<li><em>Test new Mesos features</em>: Test new features from Mesos that haven’t been released yet.
+You might be able to do that by building Mesos from the source code, but most framework developers do not know how to do it, and it is slow.</li>
+</ul>
+
+
+<p>The idea is similar to <a href="https://github.com/kubernetes/minikube">minikube</a> or <a href="https://github.com/ContainerSolutions/minimesos">minimesos</a>.</p>
+
+<p>However, <a href="https://github.com/ContainerSolutions/minimesos">minimesos</a> is no longer maintained.
+As a result, Apache Mesos community decides to maintain a solution in Mesos repository to simplify CI integrations.</p>
+
+<h1>Get started</h1>
+
+<p>Make sure <a href="https://docs.docker.com/install/">Docker</a> is installed.
+We have tested on both Linux and MacOS.</p>
+
+<p>To create a local Mesos cluster, simply do a <code>docker run</code>:</p>
+
+<pre><code class="bash">$ docker run --rm --privileged -p 5050:5050 -p 5051:5051 -p 8080:8080 mesos/mesos-mini
+</code></pre>
+
+<p>It will launch one Mesos master, one Mesos agent, and one example framework (Marathon) in the Docker container.</p>
+
+<p>You should be able to access Mesos master UI at <code>http://localhost:5050</code>.
+Similarly, you can access Mesos agent at <code>http://localhost:5051</code>.
+Marathon UI can be accessed at <code>http://localhost:8080</code>.</p>
+
+<p>You should be able to launch containers in the local Mesos cluster using Marathon like the following:</p>
+
+<pre><code class="bash">$ cat app.json
+{
+ "id": "test",
+ "cmd": "sleep 1000",
+ "cpus": 1,
+ "mem": 128,
+ "disk": 0,
+ "instances": 1,
+ "container": {
+ "docker": {
+ "image": "alpine"
+ },
+ "type": "DOCKER"
+ },
+ "networks": [
+ {
+ "mode": "host"
+ }
+ ]
+}
+$ curl -X POST -d @app.json -H "Content-type: application/json" http://localhost:8080/v2/apps
+</code></pre>
+
+<p>To stop the local Mesos cluster, please use <code>docker stop</code>.
+All artifacts associated with the local Mesos cluster will be cleaned up when the Docker container stops.</p>
+
+<p>The following Docker image tags are maintained:</p>
+
+<ul>
+<li><code>master</code>: The latest master branch HEAD.</li>
+<li><code><RELEASE_BRANCH></code>: The latest release branch HEAD (e.g., <code>1.7.x</code>).</li>
+<li><code>master-<DATE></code>: The snapshot builds for master branch (e.g., <code>master-2018-11-19</code>).</li>
+<li><code><RELEASE_BRANCH>-<DATE></code>: The snapshot builds for release branch (e.g., <code>1.7.x-2018-11-19</code>).</li>
+</ul>
+
+
+<p>Note that there is no support for release branches earlier than <code>1.7.x</code>.
+All future release branches will be supported.</p>
+
+<h1>How is it done?</h1>
+
+<h2>Manage multiple services</h2>
+
+<p>We use <code>systemd</code> to manage multiple daemons in the Mesos Mini Docker container.
+As a result, you can use the following command to restart the Mesos master in the Mesos Mini Docker container:</p>
+
+<pre><code class="bash">$ docker exec <CONTAINER_ID> systemctl restart mesos-master
+</code></pre>
+
+<p>Similarly, you can use that to restart other services (e.g., Mesos agent or Marathon).
+This is very useful for those end-to-end integration tests that want to simulate Mesos master failover.</p>
+
+<h2>Docker Containerizer</h2>
+
+<p>One of the goals of Mesos Mini is to mimic production settings as much as possible.</p>
+
+<p>To allow frameworks to launch Docker containers, we embed a Docker Daemon (i.e., Docker in Docker) in the Mesos Mini Docker container.
+For instance, to view all Docker containers in the Mesos cluster, use the following command on your host:</p>
+
+<pre><code class="bash">$ docker exec <CONTAINER_ID> docker ps
+</code></pre>
+
+<p>The cgroup root for the embedded Docker Daemon has been configured so that the cgroups for the nested Docker containers are properly nested within the Mesos Mini Docker container.
+This ensures that no cgroups traces will be left in the system when the Mesos Mini Docker container finishes.</p>
+
+<h2>Mesos Containerizer (UCR)</h2>
+
+<p>For Mesos Containerizer (UCR), we turn on most of the <a href="https://github.com/apache/mesos/docs/mesos-containerizer.md">isolators</a> that are typically turned on in production environments.
+Similar to Docker daemon, we need to do a few tweaking on cgroups in Mesos Mini Docker container to make sure it does not leave any traces when Mesos Mini Docker container terminates.</p>
+
+<p>For each cgroup subsystem, Docker does a bind mount from the current cgroup to the root of the cgroup subsystem.
+For instance:</p>
+
+<pre><code class="bash">/sys/fs/cgroup/memory/docker/<cid> -> /sys/fs/cgroup/memory
+</code></pre>
+
+<p>This will confuse Mesos agent and UCR because it relies on proc file <code>/proc/<pid>/cgroup</code> to determine the cgroups of a given process, and this proc file is not affected by the bind mount of the cgroups.</p>
+
+<p>To workaround that, we perform the following steps for each cgroup subsystems when bootstrapping the Mesos Mini Docker container to recreates the cgroups layout as if it were on the host.</p>
+
+<pre><code class="bash">$ mkdir -p /sys/fs/cgroup/memory/docker/<cid>
+$ mount --bind /sys/fs/cgroup/memory /sys/fs/cgroup/memory/docker/<cid>
+</code></pre>
+
+<p>And then set Mesos agent <code>--cgroups_root</code> flag to <code>docker/<cid></code>.</p>
+
+<h1>Maintenance</h1>
+
+<p>The <a href="https://github.com/apache/mesos/tree/master/support/mesos-mini">build scripts</a> for Mesos Mini is hosted in Mesos repository.
+The <a href="https://builds.apache.org/view/M-R/view/Mesos/job/Docker/job/Mini/">Mesos Docker Mini Jenkins CI</a> has been setup to automatically push daily snapshot builds to Docker hub for supported release branches as well as the master branch.</p>
+
+<p>For any bug fix or new features, please follow the <a href="http://mesos.apache.org/community/#contribute-a-patch">Apache Mesos contribution guide</a>.</p>
+
+<h2>Mesos CentOS Docker Image</h2>
+
+<p>In some scenarios, some users might prefer having a Docker image that only has Mesos installed.
+To enable that, we also built a <code>mesos/mesos-centos</code> Docker image.
+The tags are similar to those of Mesos Mini.
+In fact, <code>mesos/mesos-mini</code> uses <code>mesos/mesos-centos</code> as its base image.</p>
+
+<p>The <a href="https://github.com/apache/mesos/tree/master/support/packaging/centos/build-docker-centos.sh">build scripts</a> for Mesos CentOS Docker image is also hosted in Mesos repository.
+The <a href="https://builds.apache.org/view/M-R/view/Mesos/job/Docker/job/CentOS/">Mesos Docker CentOS Jenkins CI</a> has been setup to automatically push daily snapshot builds to Docker hub for supported release branches as well as the master branch.</p>
+
+<h1>Current limitations</h1>
+
+<ul>
+<li>Only one Mesos agent can be launched in the Mesos Mini Docker container.</li>
+<li>Marathon uses in-memory storage instead of ZK.</li>
+<li>SSL is not enabled.</li>
+</ul>
+
+
+ </div>
+</div>
+
+ </div><!-- /.container -->
+</div><!-- /.content -->
+
+<hr>
+
+
+
+ <!-- footer -->
+ <div class="footer">
+ <div class="container">
+
+ <div class="col-md-3">
+ <a href="https://www.apache.org/events/current-event.html">
+ <img src="https://www.apache.org/events/current-event-234x60.png"/>
+ </a>
+ </div>
+
+ <div class="col-md-3 social-blk">
+ <span class="social">
+ <a href="https://twitter.com/ApacheMesos"
+ class="twitter-follow-button"
+ data-show-count="false" data-size="large">Follow @ApacheMesos</a>
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
+ <a href="https://twitter.com/intent/tweet?button_hashtag=mesos"
+ class="twitter-hashtag-button"
+ data-size="large"
+ data-related="ApacheMesos">Tweet #mesos</a>
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
+ </span>
+ </div>
+
+ <div class="col-md-6 trademark">
+ <p>© 2012-2018 <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>
+
+ </div><!-- /.container -->
+ </div><!-- /.footer -->
+
+ <!-- JS -->
+ <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
+ <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
+ <script src="//cdnjs.cloudflare.com/ajax/libs/anchor-js/4.1.0/anchor.min.js"></script>
+
+ <!-- Inject anchors for all headings on the page, see https://www.bryanbraun.com/anchorjs. -->
+ <script type="text/javascript">
+ anchors.options = {
+ placement: 'right',
+ ariaLabel: 'Permalink',
+ };
+
+ // The default is to not add anchors to h1, but we have pages with multiple h1 headers,
+ // and we do want to put anchors on those.
+ anchors.add('h1, h2, h3, h4, h5, h6');
+ </script>
+ </body>
+</html>
diff --git a/content/sitemap.xml b/content/sitemap.xml
index b0d2b15..c5d656b 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -785,6 +785,10 @@
<lastmod>2018-11-19T00:00:00+00:00</lastmod>
</url>
<url>
+ <loc>http://mesos.apache.org/blog/mesos-mini/</loc>
+ <lastmod>2018-11-19T00:00:00+00:00</lastmod>
+ </url>
+ <url>
<loc>http://mesos.apache.org/blog/mesos-0-21-0-released/</loc>
<lastmod>2018-11-19T00:00:00+00:00</lastmod>
</url>