<story><title>Why Docker Is Not Yet Succeeding Widely in Production</title><url>http://sirupsen.com/production-docker/</url></story><parent_chain><item><author>therealmarv</author><text>I would be sold on Docker if that would be easy. I have e.g. this stack:&lt;p&gt;- 1 webserver&amp;#x2F;proxy, let&amp;#x27;s say nginx&lt;p&gt;- 1 simple Rest API server, let&amp;#x27;s say in flask&lt;p&gt;- 1 database, let&amp;#x27;s say PostgreSQL&lt;p&gt;and I want to connect all 3 things and I want to preserve logs for the whole time and preserve the state of the database (of course). Also not to forget make all bulletproof for the Internet.&lt;p&gt;And here all sorts of problems arise: What underlying OS, how to connect this containers, how to preserve state of my database and logs (it&amp;#x27;s not trivial as the article proofs again).
So overall Docker makes life not easier on this simple use-case, it makes life (of the sysadmin) more complicated.</text></item></parent_chain><comment><author>parasubvert</author><text>Ultimately I&amp;#x27;d say Cloud Foundry solves the problem but requires a lot of &amp;quot;support&amp;quot; VMs to make it work such that it might be overkill for your situation.&lt;p&gt;For example:&lt;p&gt;- What underlying OS?  CF provides a minimal Ubuntu Linux &amp;quot;stemcell&amp;quot; and then has a standard &amp;quot;rootfs&amp;quot; for Linux containers&lt;p&gt;- a Python buildpack to assemble the container on top of this OS for your Flask server&lt;p&gt;- a built-in proxy&amp;#x2F;LB so you don&amp;#x27;t need one, if you want a static web server there&amp;#x27;s a static buildpack for Nginx&lt;p&gt;- an on demand MariaDB Galera cluster for your database if you want HA; PostgreSQL is there too but non-HA I think&lt;p&gt;- A standard environment variable based service marketplace &amp;amp; discovery system for connecting the containers to each other or to the database&lt;p&gt;- high availability (with load balancer awareness) for your containers at the container, VM or rack level&lt;p&gt;- reliable log aggregation of your containers (which you can divert to a syslog server).&lt;p&gt;As I said the only trouble is when you want to make this &amp;quot;bulletproof&amp;quot; is that there are a dozen &amp;quot;support VMs&amp;quot; are all there to make your app bulletproof and secure, e.g. an OAuth2 server, the load balancer, an etcd cluster, Consul cluster, and the log aggregator, etc.  So it&amp;#x27;s overkill for one app, but good if you have several apps.&lt;p&gt;For single tenants and experimental apps, there&amp;#x27;s &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;lattice.cf&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;lattice.cf&lt;/a&gt; which runs on 3 or 4 VMs and is a subset of the above, but not what I&amp;#x27;d call &amp;quot;production ready&amp;quot;.</text></comment>
<story><title>Why Docker Is Not Yet Succeeding Widely in Production</title><url>http://sirupsen.com/production-docker/</url></story><parent_chain><item><author>therealmarv</author><text>I would be sold on Docker if that would be easy. I have e.g. this stack:&lt;p&gt;- 1 webserver&amp;#x2F;proxy, let&amp;#x27;s say nginx&lt;p&gt;- 1 simple Rest API server, let&amp;#x27;s say in flask&lt;p&gt;- 1 database, let&amp;#x27;s say PostgreSQL&lt;p&gt;and I want to connect all 3 things and I want to preserve logs for the whole time and preserve the state of the database (of course). Also not to forget make all bulletproof for the Internet.&lt;p&gt;And here all sorts of problems arise: What underlying OS, how to connect this containers, how to preserve state of my database and logs (it&amp;#x27;s not trivial as the article proofs again).
So overall Docker makes life not easier on this simple use-case, it makes life (of the sysadmin) more complicated.</text></item></parent_chain><comment><author>Benjamin_Dobell</author><text>&lt;i&gt;- 1 webserver&amp;#x2F;proxy, let&amp;#x27;s say nginx&lt;/i&gt;&lt;p&gt;&lt;i&gt;- 1 simple Rest API server, let&amp;#x27;s say in flask&lt;/i&gt;&lt;p&gt;Dokku - &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;progrium&amp;#x2F;dokku&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;progrium&amp;#x2F;dokku&lt;/a&gt;&lt;p&gt;Can&amp;#x27;t really beat `git push deploy&amp;#x2F;uat`&lt;p&gt;&lt;i&gt;- 1 database, let&amp;#x27;s say PostgreSQL&lt;/i&gt;&lt;p&gt;I just run PostgreSQL on the host and connect to it from the containers. Sure I could containerise PostgreSQL itself but I don&amp;#x27;t really see the point.&lt;p&gt;I then run my own Dokku plugin (dokku-graduate: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;glassechidna&amp;#x2F;dokku-graduate&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;glassechidna&amp;#x2F;dokku-graduate&lt;/a&gt;) for graduating my apps from UAT to production.</text></comment>