Published on December 1, 2016
1. @ITProGuru Dan Stolts (@ITProGuru) Chief Technology Strategist US DX North East – Audience Blog: ITProGuru.com dstolts@Microsoft.com www.linkedin.com/in/danstolts Containers: DevOps Enablers of Technical Solutions aka.ms/70-534-book Blaize Stewart Senior Consultant www.blaize.net @theonemule Wintellect www.wintellect.com @Wintellectuals
2. @ITProGuru What is a container?
3. @ITProGuru Isolation Scale Higher Cost More Management Lower Cost Less Management
4. Container Security “Containers offer many overall advantages. From a security perspective, they create a method to reduce attack surfaces and isolate applications to only the required components, interfaces, libraries and network connections.” – Aaron Grattafiori, NCC Group
5. @ITProGuru Docker integration Docker: Partnership: Dockerized app Run anywhere
6. What Problem(s) is Docker Trying to Solve? Enable DevOps The synthesis of operations and development working together through the entire service lifecycle, from design through the development process to production support. Support for Microservice Architecture (MSA) MSA is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.
7. @ITProGuru Dan Stolts (@ITProGuru) Chief Technology Strategist US DX North East – Audience Blog: ITProGuru.com dstolts@Microsoft.com www.linkedin.com/in/danstolts Containers: DevOps Enablers of Technical Solutions aka.ms/70-534-book Blaize Stewart Senior Consultant www.blaize.net @theonemule Wintellect www.wintellect.com @Wintellectuals
8. @ITProGuru https://aka.ms/trycontainers In this lab, you will gain fundamental knowledge for managing Windows Server containers on Windows 10 by using Docker commands. You will learn how to: 1.Install the pre-requisites for Docker on Windows 10. 2.Install Docker. 3.Install a Nano Server base image that is used to create containers. 4.Create containers with and without Hyper-V isolation. 5.Create layered container images from containers. 6.Remove Windows Server containers and Windows Server container images by using Docker. You will also learn about the parent-child relationship between containers and between container images. Finally, you will learn how to deploy a Nano Server package and install the Web server role in a container.
9. @ITProGuru Containers
10. @ITProGuru • Windows Containers run Windows processes in a container while sharing the kernel space with the underlying operating system. • Hyper-V containers wrap a Hyper-V layer around the container, then run Windows processes within the Hyper-V container. Microsoft Containers
11. @ITProGuru VM/VDI Based Computing Session Based Computing AKA Terminal Services Parent OS Applications Workloads Hardware / Hypervisor Level All users see and access same OS, CPU, memory, apps, etc No Overhead OS, Apps, Config, Mgmt EACH App/Workload; good isolation; Huge Overhead Cost Session Based Computing VS VM or VDI Based Computing Session Based Computing VM or VDI Based Computing
12. @ITProGuru Containers Parent OS Workloads Hardware / Hypervisor Level Application(s) App App App App App App App App App App App App App App App App Linux VM App App App App Single OS All Workloads Isolation EACH App Container App App App App App App App App App App App App App App App App App App OS EACH Platform Isolation EACH App Container Performance Advantages of Session Based Computing, Isolation Advantages of VMs Low overhead of session based computing and application virtualization
13. @ITProGuru How Containers Run Deployment Options Virtual Machines Hyper-V Containers Windows Server Containers Docker Containers VM Windows Server Containers on VM Hyper-V Containers on VM Azure Abstracts Host Azure Containers ACS … Containers As A Service Windows Containers can run on Windows 10 and Nano too!
14. @ITProGuru Nano Server installation option - just enough OS
15. Docker Tools Docker Machine – Utility to provision Docker Hosts Docker Engine – The server side component responsible for running and maintaining containers on a Docker Host. Docker Build – Create images using Dockerfiles Docker Run – Run instances of images as containers Docker Client – the client side tool for interacting with the Docker Engine. Docker Compose – Orchestrates complex application with multiple containers. Docker Hub – The Docker maintained repository for public and private images. https://hub.docker.com/ Docker Swarm – Clusters Docker Engines across multiple hosts. Docker Datacenter – on premises managed container solution
16. The Dockerfile Instruction Description FROM The source container to create from ENV Set environmental variables for the image that are carried to the container COPY Copies files and directories into the image from client ADD Copies files and directories into the image from client EXPOSE Tells Docker to expose a network port from the container RUN Run a command in the image CMD The command run when a container starts (One per Dockerfile) ARG Arguments set when an image is built ENTRYPOINT Allows a container to be run like an executable WORKDIR Sets the working directory for COPY, ADD, RUN, CMD, and ENTRYPOINT VOLUME Sets up a mountable volume inside a container
17. Deploying Docker Containers on Windows Blaize Stewart
18. Docker on Linux + Installing Container Service Dan Stolts
19. @ITProGuru Tip: Must Read Book Amazon… The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win Paperback – October 16, 2014 The book is available on Audio Book If you do not have an Audible Account, you get two free books when signing up for your free account. This is the BEST IT Book I have ever read.
20. @ITProGuru Gene Kim’s “3 ways” Infrastructure as Code (IaC) Continuous Integration (CI) Automated Testing Application Performance Monitoring/Management (APM) Release Management Configuration Management • Advanced Monitoring • Capacity Management • Feature Flags • • • Hypothesis Driven Development • Testing in Production • Fault Injection • • A/B Testing http://itrevolution.com/the-three-ways-principles-underpinning-devops/ http://www.itproguy.com/devops-practices/
21. @ITProGuru Traditional vs modern dev-ops Category Traditional Modern DevOps Quality of code check-ins Unknown Validated through unit tests Environment Creation/Configuration Manual Automated Deployment Frequency 1-2 months (or less frequent) Deploy whenever needed, including several per day App Deployment Process Requires meetings and planning Push-button deployment Deployment validation Manual Automated Monitoring Minimal to none Health and Performance monitoring Dev and Ops relationship Blame culture Culture of trust
22. @ITProGuru Split Services into small pieces • • • • • • • All Feature in Full App • • • • • • Application Feature A Feature C Feature E Feature B Feature D
23. @ITProGuru Dev/Ops Process with Containers Developers Operations automates deployment and monitors deployed apps from central repository Operations collaborates with developers to provide app metrics and insights Developers update, iterate, and deploy updated containers Central Repository Containers pushed to central repository
25. @ITProGuru Applications Clients Infrastructure Management Databases & Middleware App Frameworks & Tools DevOps PaaS Azure is an open cloud Orches tration
26. @ITProGuru https://itproguru.com/expert/2016/10/docker-create-container-change- container-save-as-new-image-and-connect-to-container/ http://www.blaize.net/2016/10/an-introduction-to-docker/ http://www.blaize.net/2016/11/an-introduction-to-azure-container-services/ https://www.nccgroup.trust/us/our-research/understanding-and-hardening- linux-containers/ https://msftdevops.learnondemandsystems.com/ ITProGuru.com Blaize.net
27. @ITProGuru In this lab, you will gain fundamental knowledge for managing Windows Server containers on Windows 10 by using Docker commands. You will learn how to: 1.Install the pre-requisites for Docker on Windows 10. 2.Install Docker. 3.Install a Nano Server base image that is used to create containers. 4.Create containers with and without Hyper-V isolation. 5.Create layered container images from containers. 6.Remove Windows Server containers and Windows Server container images by using Docker. You will also learn about the parent-child relationship between containers and between container images. Finally, you will learn how to deploy a Nano Server package and install the Web server role in a container. https://aka.ms/trycontainers
28. @ITProGuru 1. https://beta.docker.com/docs/ 2. 3. https://docs.docker.com/engine/installation/windows/ Additional Homework [Optional]
29. @ITProGuru aka.ms/devops aka.ms/iac_tlp aka.ms/devopsmva #TalkDevOps
30. @ITProGuru https://aka.ms/trycontainers http://ITProGuru.com http://www.blaize.net http://aka.ms/windowscontainers https://msdn.microsoft.com/virtualization/windowscontainers