{"id":2691,"date":"2014-11-12T07:02:12","date_gmt":"2014-11-12T13:02:12","guid":{"rendered":"http:\/\/benincosa.com\/blog\/?p=2691"},"modified":"2014-11-19T11:23:55","modified_gmt":"2014-11-19T17:23:55","slug":"why-docker-changes-everything","status":"publish","type":"post","link":"https:\/\/benincosa.com\/?p=2691","title":{"rendered":"Why Docker Changes everything"},"content":{"rendered":"<p>There are many shifts we talk about in IT. \u00a0Here are 2 recent examples come to mind that most people are familiar with:<\/p>\n<ul>\n<li>The shift from physical to virtual<\/li>\n<li>The shift from on-prem infrastructure to cloud based consumption IT.<\/li>\n<\/ul>\n<p>Ultimately it is an organization with a clear vision that disrupts the status quo and creates a more efficient way of doing things. \u00a0Those 2 examples were the result of the brilliant people who started VMware and Amazon Web Services (AWS)<\/p>\n<p>VMware was incredible and made it so easy. \u00a0How many vMotion demos did you see? \u00a0They nailed it and their execution was outstanding. \u00a0And so vCenter with ESX still stands as their greatest achievement. \u00a0But unfortunately, nothing they&#8217;ve done since has really mattered. \u00a0Certainly they are pounding the drum on NSX, but the implications and the payoffs are nothing like an organization could get from when they went from p2v (physical to virtual). \u00a0 VCAC or vRealize, or whatever they decided to rename it this quarter is not catching on. \u00a0And vCheese, or vCHS, or vCloud Air (cause &#8216;Air&#8217; worked for Apple) isn&#8217;t all that either. \u00a0I don&#8217;t have any customers using it. \u00a0I will admit, I&#8217;m pretty excited about VSAN, but until the get deduplication, its just not that hot. \u00a0And solutions from providers like SimpliVity have more capabilities. \u00a0 But there can be no doubt that vSphere\/ESX is their greatest success.<\/p>\n<p>AWS disrupted everybody. \u00a0They basically killed the poor hardware salesman that worked in the SMB space. \u00a0 AWS remains far in the leadership quadrant.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone\" src=\"http:\/\/na1.www.gartner.com\/imagesrv\/reprints\/262000\/262037\/262037_1.png;pvadad7b6369de498f\" alt=\"\" width=\"607\" height=\"607\" \/><\/p>\n<p>My customers, even the ones I could argue that are not on the forefront of technology, are migrating to AWS and Azure. \u00a0Lately, I&#8217;ve been reading more and more about Digital Ocean. \u00a0I remember at IBM back in 2003 hearing about Utility Computing. \u00a0We even opened an OnDemand Center, where customers could rent compute cycles. \u00a0If we had the clear vision and leadership that AWS had, we could have made it huge at that time. \u00a0(Did I just imply that IBM leadership missed a huge opportunity? \u00a0I sure did.)<\/p>\n<p>Well today we have another company that has emerged on the forefront of technology that is showing all others the way and will soon cause massive disruption. \u00a0That company is <a href=\"https:\/\/www.docker.com\">Docker<\/a>. \u00a0Docker will soon be found on every public and private cloud. \u00a0And the implications are huge.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone aligncenter\" src=\"https:\/\/d3oypxn00j2a10.cloudfront.net\/0.12.6\/img\/nav\/docker-logo-loggedout.png\" alt=\"\" width=\"161\" height=\"38\" \/><\/p>\n<h2>What are Containers?<\/h2>\n<p>I am so excited about Docker I can barely contain myself. \u00a0Get it? \u00a0Contain.. Docker is a container? \u00a0No? \u00a0Ok, let me explain Docker. \u00a0I was working for IBM around 2005 and we were visiting UCS talking about xCAT and supercomputers and the admins there started telling us about Linux containers. \u00a0or LXCs. \u00a0It was based on the idea of a <a href=\"http:\/\/en.wikipedia.org\/wiki\/UnionFS\">Union File System<\/a>. \u00a0Basically, you could overlay files on top of each other in layers. \u00a0So let&#8217;s say your base operating system had a file called \/tmp\/iamafile with the contents &#8220;Hi, I&#8217;m a file&#8221;. \u00a0You could create a container (which I have heard explained as a chroot environment on steroids, cause its basically mapped over the same root). \u00a0In this container, you could open the file \/tmp\/iamafile and change the contents to &#8220;I am also a file modified&#8221;. \u00a0Now that file will get a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Copy-on-write\">Copy-on-Write<\/a>. \u00a0Meaning, only the container will see the change. \u00a0It will also save the change. \u00a0But the basic underlying file on the root operating system sees no change. \u00a0Its still the same file that says &#8220;Hi, I&#8217;m a file&#8221;. \u00a0Only the instance in the container has changed.<\/p>\n<p>Its not just files that can be contained in the container. \u00a0Its also processes. \u00a0So you can run a process in the container and run it in its own environment.<\/p>\n<p>That technology, while super cool, seemed to be relegated to the cute-things-really-geeky-people-do category. \u00a0I dismissed it and never thought about it again until I saw Docker was using it.<\/p>\n<h2>Why Docker made Containers Cool<\/h2>\n<p>Here are the things Docker gave that made it so cool, and why it will disrupt many businesses:<\/p>\n<h3>1. \u00a0They created a build process to create containers.<\/h3>\n<p>How do most people manage VMs? \u00a0Well, they make this golden image of a server. \u00a0They put all the right things in it. \u00a0Some more advanced people will script it, but more often than not, I just see some blessed black box.<\/p>\n<figure style=\"width: 800px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"\" src=\"http:\/\/jenteryteaches.com\/2011\/150\/wp-content\/uploads\/2011\/09\/blackbox.jpg\" alt=\"\" width=\"800\" height=\"600\" \/><figcaption class=\"wp-caption-text\">Our blessed black box<\/figcaption><\/figure>\n<p>We don&#8217;t know how this image came to be, or what&#8217;s in it. \u00a0But it&#8217;s blessed. \u00a0It has all our security patches, configuration files, etc. \u00a0Hopefully that guy who knows how to build it all doesn&#8217;t quit.<\/p>\n<p>This is not reproducible. \u00a0The cool kids then say: &#8220;We&#8217;ll use Puppet because it can script everything for us&#8221; \u00a0Then they talk about how they know this cool puppet file language that no one else knows and feel like puppet masters. \u00a0So they build configuration management around the image.<\/p>\n<p>With Docker this is not necessary. \u00a0I just create a Dockerfile that has all the things in it a puppet script or chef recipe had in it and I&#8217;m done. \u00a0But not only that, I can see how the image was created. \u00a0I have a blueprint that syntactically is super easy. \u00a0There are only 12 syntax lines. \u00a0Everything else is just how you would build the code.<\/p>\n<p>We also don&#8217;t try to abstract things like Puppet and Chef do. \u00a0We just say we want the container to install nginx and it does by doing:<\/p>\n<p>RUN apt-get -y install nginx<\/p>\n<p>That&#8217;s it. \u00a0Super easy to tell what&#8217;s going on. \u00a0Then you just build your image.<\/p>\n<h3>2. Containers are Modular<\/h3>\n<p>The build process with Docker is incredible. \u00a0When I first looked at it, I thought: Great, my Dockerfile is going to look like a giant monolithic kickstart postscript that I used to make when installing Red Hat servers.<\/p>\n<p>But that&#8217;s not how it works. \u00a0Containers build off of each other. \u00a0For my application I&#8217;m working on now, I have an NGINX container, a ruby container, an app server container, and my application container sitting on that. \u00a0Its almost like having modules. \u00a0The modules just sit on top of each other. \u00a0Turtles all the way down.<\/p>\n<p>This way I can mix and match different containers. \u00a0I might want to reuse my NGINX container with my python app.<\/p>\n<h3>3. \u00a0Containers are in the Cloud: Docker Hub<\/h3>\n<p>What github did for code, docker has done for system management. \u00a0I can browse how other people build nginx servers. \u00a0I can see what they do when I look at Dockerhub. \u00a0I can even use their images. \u00a0But while that&#8217;s cool and all, the most important aspect? \u00a0I can download those containers and run them anywhere.<\/p>\n<p>You have an AWS account? \u00a0You can just grab a docker image and run it there. \u00a0Want to run it on Digital Ocean? \u00a0OpenStack? VMware? \u00a0Just download the docker image. \u00a0It&#8217;s almost like we put your VM templates in the cloud and can pull them anywhere.<\/p>\n<p>What this gives us is app portability. \u00a0Amazing app portability. \u00a0All I need is a generic Ubuntu 14.04 server and I can get my application running on it faster than anyway I&#8217;ve been able to do before.<\/p>\n<p>How many different kind of instances would I need in AWS? \u00a0How many templates in my vCenter cluster? \u00a0Really, just one: \u00a0One that is ready for docker to run.<\/p>\n<h2>Who Gets Disrupted?<\/h2>\n<p>So now that we have extreme portability we start to see how this new model can disrupt all kinds of &#8220;value added&#8221; technologies that other companies have tried to fill the void on.<\/p>\n<p><iframe loading=\"lazy\" src=\"\/\/www.youtube.com\/embed\/VDW0ZnZxjn4\" width=\"420\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p><strong>Configuration tools<\/strong> &#8211; Puppet, Chef, I don&#8217;t need to learn you anymore. \u00a0I don&#8217;t need your agents asking to update and checking in anymore. \u00a0Sure, there are some corner cases, but for the most part, I&#8217;ll probably just stick with a push method tool like Ansible that can configure just a few commands to get my server ready for Docker. \u00a0The rest of the configuration is done in the Dockerfile.<\/p>\n<p><strong>Deployment tools<\/strong> \u00a0&#8211; I used Capistrano for deploying apps on a server. \u00a0I don&#8217;t need to deploy you any more. \u00a0Docker images do that for me.<\/p>\n<p><strong>VMware<\/strong> &#8211; Look at <a href=\"http:\/\/blogs.vmware.com\/cto\/vmware-docker-better-together\/\">this blog post<\/a> from VMware and then come back and tell me why Docker needs VMware? \u00a0Chris Wolf tries to explain how the vCloud Suite can extend the values of containers. \u00a0None of those seem to be much value to me. \u00a0<strong>Just as VMware has tried to commoditize the infrastructure, Docker is now commoditizing the virtual infrastructure.<\/strong><\/p>\n<p><strong>AWS<\/strong> &#8211; Basically any cloud provider is going to get commoditized. \u00a0The only way AWS or Google App Engine or Azure can get you to stick around is by offering low prices OR get you hooked on their APIs and services. \u00a0So if you are using DynamoDB, you can&#8217;t get that anywhere but AWS, so you are hooked. \u00a0But if I write my container that has that capability, I can move it to any cloud I want. \u00a0This means its up to the cloud providers to innovate. \u00a0It will be interesting to hear what more AWS says about containers at Re:Invent next week.<\/p>\n<h2>Who Can Win?<\/h2>\n<p>Docker is already going to win. \u00a0But more than Docker, I \u00a0think Cisco has potential here. \u00a0Cisco wants to create the Intercloud. \u00a0What a better way to transport workloads through the inter cloud than with docker containers. \u00a0Here is where Cisco needs to execute:<\/p>\n<p>1. \u00a0They have to figure out networking with\u00a0Docker. \u00a0\u00a0<a href=\"http:\/\/blogs.cisco.com\/datacenter\/docker-networking-going-enterprise\">Check out what Cisco has done with the 1000v on KVM. \u00a0It works now, today with containers<\/a>. \u00a0But there&#8217;s more that needs to be done. \u00a0A more central user friendly way perhaps? \u00a0A GUI?<\/p>\n<p>2. \u00a0They have to integrate it into Intercloud Director and somehow get the right hooks to make it even easier. \u00a0 Inter cloud Director is off to a pretty good start. \u00a0It actually can transport VMs from your private data center to AWS, Azure, and DimentionData clouds, but it has a ways more to go. \u00a0If we had better visibility into the network utilization of our containers and VMs both onprem and offprem, we would really have a great solution.<\/p>\n<h2>What about Windows?<\/h2>\n<p>Fine, you say. \u00a0All good, but our applications run on Microsoft Servers. \u00a0So this won&#8217;t work for us. \u00a0Well, you <a href=\"http:\/\/www.zdnet.com\/docker-container-support-coming-to-microsofts-next-windows-server-release-7000034708\/\">probably missed this announcement<\/a>. \u00a0So yeah, coming soon, to a server near you.<\/p>\n<h2>Conclusion<\/h2>\n<p>Its 2014. \u00a0Docker is about a year old. \u00a0I think we&#8217;re going to hear lots more about it. \u00a0Want another reason why its great? \u00a0Its open source! So start playing with Docker now. \u00a0You&#8217;ll be glad you got ahead of the curve.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are many shifts we talk about in IT. \u00a0Here are 2 recent examples come to mind that most people are familiar with: The shift from physical to virtual The shift from on-prem infrastructure to cloud based consumption IT. Ultimately it is an organization with a clear vision that disrupts the status quo and creates&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[463,478],"tags":[991,496,1011,495,981],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/posts\/2691"}],"collection":[{"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/benincosa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2691"}],"version-history":[{"count":3,"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/posts\/2691\/revisions"}],"predecessor-version":[{"id":2694,"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/posts\/2691\/revisions\/2694"}],"wp:attachment":[{"href":"https:\/\/benincosa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/benincosa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/benincosa.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}