<html>
<head>
<meta name="generator" content="Windows Mail 17.5.9600.20689">
<style data-externalstyle="true"><!--
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
}
p.MsoNormal, li.MsoNormal, div.MsoNormal {
margin:0in;
margin-bottom:.0001pt;
}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst,
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle,
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
line-height:115%;
}
--></style></head>
<body dir="ltr">
<div data-externalstyle="false" dir="ltr" style="font-family: 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif';font-size:12pt;"><div style="color: rgb(0, 111, 201); font-family: Arial; font-size: 14pt;">Clarification: we do have a build process for docker containers. This is far easier than a build process on the various linuxes our people have, and it does things like pulling releases of the major components from Github. So, we aren't end-running around creating a build process. But this still takes a lot of time to manage. <br></div><div style="color: rgb(0, 111, 201); font-family: Arial; font-size: 14pt;" data-signatureblock="true"><div style="color: rgb(0, 111, 201); font-family: Arial; font-size: 14pt;"><br></div><div style="color: rgb(0, 111, 201); font-family: Arial; font-size: 14pt;">Alva L. Couch<br>Assoc. Prof. of Computer Science<br>Tufts University<br>Medford, MA 02155</div><div style="color: rgb(0, 111, 201); font-family: Arial; font-size: 14pt;"><br></div></div><div style="padding-top: 5px; border-top-color: rgb(229, 229, 229); border-top-width: 1px; border-top-style: solid;"><div><font face=" 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif'" style='line-height: 15pt; letter-spacing: 0.02em; font-family: "Calibri", "Segoe UI", "Meiryo", "Microsoft YaHei UI", "Microsoft JhengHei UI", "Malgun Gothic", "sans-serif"; font-size: 12pt;'><b>From:</b> <a href="mailto:dewey@sasser.com" target="_parent">Dewey Sasser</a><br><b>Sent:</b> Wednesday, May 6, 2015 10:53 AM<br><b>To:</b> <a href="mailto:couch@cs.tufts.edu" target="_parent">Alva Couch</a>, <a href="mailto:markllama@gmail.com" target="_parent">Mark Lamourine</a><br><b>Cc:</b> <a href="mailto:dean.anderson71@yahoo.com" target="_parent">Dean Anderson</a>, <a href="mailto:bblisa@bblisa.org" target="_parent">bblisa@bblisa.org</a></font></div></div><div><br></div><div dir="">
<div class="moz-cite-prefix">On 5/6/2015 8:31 AM, <a class="moz-txt-link-abbreviated" href="mailto:couch@cs.tufts.edu" target="_parent">couch@cs.tufts.edu</a>
wrote:<br>
</div>
<blockquote style="margin-top: 0px; margin-bottom: 0px;" cite="mid:20150506123653.4AE3810F24F5@pmx.eecs.tufts.edu">
<div style="color: rgb(0, 111, 201); font-family: Arial; font-size: 14pt;">I might add that what makes Docker useful
for us is that we can deal with rather complex configuration
management requirements -- including several version-locked
interlocking subsystems -- without changing the host OS. </div>
<div style="color: rgb(0, 111, 201); font-family: Arial; font-size: 14pt;"><br>
</div>
<div style="color: rgb(0, 111, 201); font-family: Arial; font-size: 14pt;">But I might add that this is “survival of
that which fits.” </div>
</blockquote>
<br>
I think this is one of the double-edge swords of Docker -- as you
(almost) completely capture configuration, it's far too easy to
create a non-repeatable "golden image" and pass it around. Of
course, it's fairly easy to *NOT* do this as well, but there will be
less immediate pain to using Docker with a "this one works, go with
it" model than there is with VM images.<br>
<br>
I will add that as most Docker images are fairly well contained (pun
intended), it's fairly easy to put the whole container through a
build/validation/deployment pipeline. You can usually (depending on
container linkage issues) have high confidence that things work in
PROD the way they worked in DEV and TEST. (NOTE: this is going to
be less and less true as we move more into inter-container
relationships and service discovery through e.g. consul or etcd).<br>
<br>
<blockquote style="margin-top: 0px; margin-bottom: 0px;" cite="mid:20150506123653.4AE3810F24F5@pmx.eecs.tufts.edu">
<div style="color: rgb(0, 111, 201); font-family: Arial; font-size: 14pt;">The main reason we use Docker is that it is
literally <strong>too difficult </strong>for our developers
to build the run/test configuration unassisted. This means
that any work we can do for them -- through docker -- is
definitely worth it, even though that work can be involved,
especially in interfacing host/guest OS resources.<br>
</div>
</blockquote>
<br>
One the one hand, that seems dangerous to me -- using Docker to work
around a build difficulty problems feels too much like sweeping
problems under the rug. <br>
<br>
On the other hand, Docker *does* allow good separation of concerns.
For example, "Ops" can own a base image, with proper instrumentation
and operational features, and "Dev" can simply inherit from that
image.<br>
<br>
Perhaps the single most powerful pattern in Docker is the similarity
to OO programming (inheritance and composition). It works well for
a Devops mindset to say "this machine is *JUST LIKE* that machine,
plus this other stuff". Software Development has spent many years
getting good at decomposition through inheritance and inclusion.
Docker (particularly adding Fleet or Compose) allows us to express
this at the system level.<br>
<br>
--<br>
D<br>
</div></div>
</body>
</html>