<p>Can someone please explain the advantages/disadvantages using the following when building container images, rather than using the dockerfile.</p>

<ol>
<li><p>Packer - tool for creating machine and container images for multiple platforms from a single source configuration</p></li>
<li><p>Dockramp -  A Client-driven Docker Container Image Builder</p></li>
</ol>

Tharanga Abeyseela
<ol>
<li><p>Packer is a tool that initially was created to create AWS AMIs or base VM images in AWS. It has been extended to be used with containers, a lot of different Virtualization software such as <a href="https://www.vmware.com" rel="nofollow">VMware</a>, <a href="http://wiki.qemu.org/KVM" rel="nofollow">KVM/QEMU</a>, and other cloud/IaaS providers like <a href="https://www.digitalocean.com/" rel="nofollow">DigitalOcean</a>. It was developed by <a href="https://hashicorp.com/" rel="nofollow">Hashicorp</a> but it's open source.</p></li>
<li><p><a href="https://github.com/jlhawn/dockramp" rel="nofollow">Dockramp</a> is an alternative to using <code>docker build</code> it uses the same
<code>Dockerfile</code> that <code>docker build</code> would use but with some additional
enhancements. For example, it can use accept
<a href="https://en.wikipedia.org/wiki/Here_document" rel="nofollow">heredocs</a> in the <code>RUN</code>
command for multiple line bash commands.</p></li>
</ol>

<p>Docker/LXC is fairly fast but the main advantage of building images (and this applies to Virtualization images too) is that you can have a fully installed application or application stack from the get-go.  This tends to work better in autoscaling environments because it takes less time for your application to start servicing traffic either in a container or VM.  </p>

<p>When you are creating your docker image all the time with your Dockerfile it needs to run a series of steps before becoming 'ready', hence it might take longer to start servicing traffic.</p>

<p>Hope it helps.</p>
