<p>Databases are designed to consume all memory, CPU and IO available to them.
Is there are good/bad reasons Docker should not be used for databases in production?</p>

<p>May be this question applies to other tools like MOMs Apache Kafka, Apache ActiveMQ etc.</p>

<p>Docker is not a full-scale virtual machine (at least when run on Linux), this is just another process, running on the same kernel, as host machine. Moreover, all <code>docker</code> container processes can be seen in a host machine with <code>ps aux</code>. </p>

<p>The only additional load <code>Docker</code> gives is loading another OS on top of your kernel, but actually most containers are deployed with extremely lightweight stuff like <code>alpine</code> Linux, so I dont think it really has to be taken into consideration.</p>

<p>From another point, having Database (or any other high load service) in a containers gives you following advantages:</p>

<ul>
<li>Scaling (containers can easily be spread among nodes with container orchestration tools like <code>k8s</code>)</li>
<li>Easy deploy (all dependencies are inside)</li>
<li>Easy upgrade (just replace the container)</li>
<li>Easy testing (no need for db-cleaning procedures in advance of running tests)
and others</li>
</ul>

<p>So deploying containerized services today is a right practice.</p>
