Windows Azure Conference 2014 Windows Azure Conference 2014 Running Docker on Windows Azure The Current State of Cloud • • • • • • • IaaS has rapidly evolved in the last 3 years PaaS has matured into enterprise PaaS VMs are not portable across the IaaS vendors Every PaaS vendor follows a different deployment format IaaS needs Ops support DevOps is picking momentum There is an opportunity to make deployments more efficient Windows Azure Conference 2014 Windows Azure Conference 2014 Windows Azure Conference 2014 Cargo – Pre 1960 Windows Azure Conference 2014 How Shipping Container Solved the Problem Windows Azure Conference 2014 6 Software deployment is no different Windows Azure Conference 2014 7 The Matrix from Hell Windows Azure Conference 2014 8 Container Eliminates the Matrix from Hell Windows Azure Conference 2014 9 Docker is the Shipping Container for Code Windows Azure Conference 2014 10 Introducing Docker • Open source engine to automate the deployment of any application as a lightweight, portable, self-sufficient container to run virtually anywhere • Containers encapsulate any payload and consistently run on any server • Common use cases for Docker include: – – – – Automating the packaging and deployment of applications Creation of lightweight, private PAAS environments Automated testing and continuous integration/deployment Deploying and scaling web apps, databases and backend services Windows Azure Conference 2014 Separation of Concerns Ops worry about what’s outside the container • Logging • Remote Access • Monitoring • Network configuration All containers start, stop, attach and migrate the same way Developers worry about what’s inside the container • Code • Libraries • Package Manner • Apps • Data All Linux servers look the same Windows Azure Conference 2014 Installing Docker sudo apt-get update sudo apt-get -y install linux-image-generic-lts-raring linux-headers-generic-lts-raring sudo reboot sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 sudo sh -c "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list” sudo apt-get update sudo apt-get -y install lxc-docker Windows Azure Conference 2014 Demo Installing Docker on Azure VM Windows Azure Conference 2014 Windows Azure Conference 2014 What’s in it for Developers? • Build once run anywhere – Clean, safe, hygienic and portable runtime for your app – No worries about missing dependencies and packages during deployment – Safely isolate applications in their own containers without worrying about conflicting versions, dependencies and packages – Automate everything – integration, packaging and deployment – Eliminate concerns about OS, platform and runtimes – Deploy in a VM without the overhead of VM – Instant replay and reset of image snapshots Windows Azure Conference 2014 What’s in it for DevOps? • Configure once…run everywhere – Make the lifecycle more efficient, consistent and repeatable – Increased the quality of code produced by developers – Efficiently manage development, test, staging and production environments – Separate roles & responsibilities – Significantly improve the reliability of continuous integration and continuous delivery – Simpler than managing VMs in terms of cost, performance, deployment and portability Windows Azure Conference 2014 Virtual Machine and Containers • Virtual Machine – Allow Multiple Guest OS to run together on a single machine – Each Guest OS abstracts Compute, Storage and Network Components – Hypervisor itself could run on bare-metal (ESXi) or be part of an OS (KVM) – Guest ISA is translated to Host ISA using multiple techniques like Hardware Virtualization or Binary Translation Windows Azure Conference 2014 Virtual Machine and Containers • Containers – Light weight containment system running – Runs instructions native to the core CPU – Container shares the Kernel and Process scheduler with the Host OS – No Binary Translation or VM exits – Containers can be run either directly on the Host OS or in a Guest VM Windows Azure Conference 2014 Container vs. Virtual Machines Containers are isolated but share OS and, where appropriate, binaries and libraries Containers offer significantly faster deployment, lesser overhead, easier migration and faster restart Windows Azure Conference 2014 Why are Docker Containers Lightweight? VMs Containers Original App (No OS to take up space) Every app, every copy of an app and modifications of the app requires a new image Windows Azure Conference 2014 Copy of the App (No OS. Shares Bins/Libs) Modified App Contains the diff between original container How Docker Works? Windows Azure Conference 2014 Changes and Updates Windows Azure Conference 2014 Docker Terminology • Image – Read only layer used to build a container • Container – Self contained runtime environment that is built using one or more images • Index / Registry – Public or private servers to share images • Repository – Group of images located in the Docker registry Windows Azure Conference 2014 Building your first Docker Image sudo docker pull ubuntu sudo docker images sudo docker run –i –t ubuntu /bin/bash sudo docker ps sudo docker commit <id> <repository:tag> sudo docker push <name> Windows Azure Conference 2014 Demo Building an Image Windows Azure Conference 2014 Windows Azure Conference 2014 Current State of Docker • Cloud Foundry and Red Hat OpenShift evaluating Docker • 10+ startups built on Docker • Official support for AWS, GCE, Rackspace Windows Azure Conference 2014 Resources • https://www.docker.io/gettingstarted/ • http://www.slideshare.net/rajdeep/conferencepresentationv3 Windows Azure Conference 2014 Windows Azure Conference 2014 Windows Azure Conference 2014