{"id":5287,"date":"2015-08-17T00:00:00","date_gmt":"2015-08-17T00:00:00","guid":{"rendered":"https:\/\/azure.microsoft.com\/blog\/containers-docker-windows-and-trends"},"modified":"2024-07-23T13:10:08","modified_gmt":"2024-07-23T20:10:08","slug":"containers-docker-windows-and-trends","status":"publish","type":"post","link":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/","title":{"rendered":"Containers: Docker, Windows and Trends"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">You can\u2019t have a discussion on cloud computing lately without talking about containers. Organizations across all business segments, from banks and major financial service firms to e-commerce sites, want to understand what containers are, what they mean for applications in the cloud, and how to best use them for their specific development and IT operations scenarios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From the basics of what containers are and how they work, to the scenarios they\u2019re being most widely used for today, to emerging trends supporting \u201ccontainerization\u201d, I thought I\u2019d share my perspectives to better help you understand how to best embrace this important cloud computing development to more seamlessly build, test, deploy and manage your cloud applications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"containers-overview\">Containers Overview<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In abstract terms, all of computing is based upon running some \u201cfunction\u201d on a set of \u201cphysical\u201d resources, like processor, memory, disk, network, etc., to accomplish a task, whether a simple math calculation, like 1+1, or a complex application spanning multiple machines, like Exchange. Over time, as the physical resources became more and more powerful, often the applications did not utilize even a fraction of the resources provided by the physical machine. Thus \u201cvirtual\u201d resources were created to simulate underlying physical hardware, enabling multiple applications to run concurrently \u2013 each utilizing fractions of the physical resources of the same physical machine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We commonly refer to these simulation techniques as virtualization.&nbsp;While many people immediately think virtual machines when they hear virtualization, that is only one implementation of virtualization. Virtual memory, a mechanism implemented by all general purpose operating systems (OSs), gives applications the illusion that a computer\u2019s memory is dedicated to them and can even give an application the experience of having access to much more RAM than the computer has available.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Containers are another type of virtualization, also referred to as OS Virtualization. Today\u2019s containers on Linux create the perception of a fully isolated and independent OS to the application. To the running container, the local disk looks like a pristine copy of the OS files, the memory appears only to hold files and data of a freshly-booted OS, and the only thing running is the OS. To accomplish this, the \u201chost\u201d machine that creates a container does some clever things.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first technique is namespace isolation. Namespaces include all the resources that an application can interact with, including files, network ports and the list of running processes. Namespace isolation enables the host to give each container a virtualized namespace that includes only the resources that it should see. With this restricted view, a container can\u2019t access files not included in its virtualized namespace regardless of their permissions because it simply can\u2019t see them. Nor can it list or interact with applications that are not part of the container, which fools it into believing that it\u2019s the only application running on the system when there may be dozens or hundreds of others.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For efficiency, many of the OS files, directories and running services are shared between containers and projected into each container\u2019s namespace. Only when an application makes changes to its&nbsp;containers, for example by modifying an existing file or creating a new one, does the container get distinct copies from the underlying host OS \u2013 but only of those portions changed, using Docker\u2019s \u201ccopy-on-write\u201d optimization.&nbsp; This sharing is part of what makes deploying multiple containers on a single host extremely efficient.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Second, the host controls how much of the host\u2019s resources can be used by a container. Governing resources like CPU, RAM and network bandwidth ensure that a container gets the resources it expects and that it doesn\u2019t impact the performance of other containers running on the host. For example, a container can be constrained so that it cannot use more than 10% of the CPU. That means that even if the application within it tries, it can\u2019t access to the other 90%, which the host can assign to other containers or for its own use. Linux implements such governance using a technology called \u201ccgroups.\u201d Resource governance isn\u2019t required in cases where containers placed on the same host are cooperative, allowing for standard OS dynamic resource assignment that adapts to changing demands of application code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The combination of instant startup that comes from OS virtualization and reliable execution that comes from namespace isolation and resource governance makes containers ideal for application development and testing. During the development process, developers can quickly iterate. Because its environment and resource usage are consistent across systems, a containerized application that works on a developer\u2019s system will work the same way on a different production system. The instant-start and small footprint also benefits cloud scenarios, since applications can scale-out quickly and many more application instances can fit onto a machine than if they were each in a VM, maximizing resource utilization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comparing a similar scenario that uses virtual machines with one that uses containers highlights the efficiency gained by the sharing. In the example shown below, the host machine has three VMs. In order to provide the applications in the VMs complete isolation, they each have their own copies of OS files, libraries and application code, along with a full in-memory instance of an OS. Starting a new VM requires booting another instance of the OS, even if the host or existing VMs already have running instances of the same version, and loading the application libraries into memory. Each application VM pays the cost of the OS boot and the in-memory footprint for its own private copies, which also limits the number of application instances (VMs) that can run on the host.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp\" alt=\"App Instances on Host\" title=\"App Instances on Host\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The figure below shows the same scenario with containers. Here, containers simply share the host operating system, including the kernel and libraries, so they don\u2019t need to boot an OS, load libraries or pay a private memory cost for those files. The only incremental space they take is any memory and disk space necessary for the application to run in the container. While the application\u2019s environment feels like a dedicated OS, the application deploys just like it would onto a dedicated host. The containerized application starts in seconds and many more instances of the application can fit onto the machine than in the VM case.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/Containers-on-Host_thumb.webp\" alt=\"Containers on Host\" title=\"Containers on Host\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"docker-s-appeal\">Docker&#8217;s Appeal<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The concept of namespace isolation and resource governance related to OSs has been around for a long time, going back to BSD Jails, Solaris Zones and even the basic UNIX chroot (change root) mechanism. However, by creating a common toolset, packaging model and deployment mechanism, Docker greatly simplified the containerization and distribution of applications that can then run anywhere on any Linux host. This ubiquitous technology not only simplifies management by offering the same management commands against any host, it also creates a unique opportunity for seamless DevOps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From a developer\u2019s desktop to a testing machine to a set of production machines, a Docker image can be created that will deploy identically across any environment in seconds. This story has created a massive and growing ecosystem of applications packaged in Docker containers, with DockerHub, the public containerized-application registry that Docker maintains, currently publishing more than 180,000 applications in the public community repository.&nbsp; Additionally, to guarantee the packaging format remains universal, Docker recently organized the Open Container Initiative (OCI), aiming to ensure container packaging remains an open and foundation-led format, with Microsoft as one of the founding members.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"windows-server-and-containers\">Windows Server and Containers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To bring the power of containers to all developers, last October we announced plans to implement container technology in Windows Server. To enable developers that use Linux Docker containers with the exact same experience on Windows Server, we also announced our partnership with Docker to extend the Docker API and toolset to support Windows Server Containers. For us, this was an opportunity to benefit all of our customers, both Linux and Windows alike. As I recently demonstrated at <a href=\"https:\/\/www.youtube.com\/watch?v=8vSPpPSd00w#t=1h16m07s\">DockerCon<\/a>, we are excited to create a unified and open experience for developers and system administrators to deploy their containerized applications comprising both Windows Server and Linux. We are developing this in the open <a href=\"https:\/\/github.com\/docker\/docker\">Docker GitHub repository<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Windows Server 2016, we will be releasing two flavors of containers, both of which will be deployable using Docker APIs and the Docker client: Windows Server Containers and Hyper-V Containers. Linux containers require Linux APIs from the host kernel and Windows Server Containers require the Windows APIs of a host Windows kernel, so you cannot run Linux containers on a Windows Server host or a Windows Server Container on a Linux host. However, the same Docker client can manage all of these containers, and while you can\u2019t run a packaged Windows container on Linux, a Windows container package works with Windows Server Containers and Hyper-V Containers because they both utilize the Windows kernel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s the question of when you might want to use a Windows Server Container versus a Hyper-V Container. While the sharing of the kernel enables fast start-up and efficient packing, Windows Server Containers share the OS with the host and each other. The amount of shared data and APIs means that there may be ways, whether by design or because of an implementation flaw in the namespace isolation or resource governance, for an application to escape out of its container or deny service to the host or other containers. Local elevation of privilege vulnerabilities that operating system vendors patch is an example of a flaw that an application could leverage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thus, Windows Server Containers are great for scenarios where the OS trusts the applications that will be hosted on it, and all the applications also trust each other. In other words, the host OS and applications are within the same trust boundary. That\u2019s true for many multi-container applications, applications that make up a shared service of a larger application, and sometimes applications from the same organization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are cases where you may want to run applications from different trust boundaries on the same host, however. One example is if you are implementing a multitenant PaaS or SaaS offering where you allow your customers to supply their own code to extend the functionality of your service. You don\u2019t want one customer\u2019s code to interfere with your service or gain access to the data of your other customers, but you need a container that is more agile than a VM and that takes advantage of the Docker ecosystem. We have several examples of such services in Azure, like Azure Automation and&nbsp;Machine Learning. We call the environment they run in \u201chostile multi-tenancy,\u201d since we have to assume that there are customers that deliberately seek to subvert the isolation. In these types of environments, the isolation of Windows Server Containers may not provide sufficient assurance, which motivated our development of Hyper-V Containers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hyper-V Containers take a slightly different approach to containerization. To create more isolation, Hyper-V Containers each have their own copy of the Windows kernel and have memory assigned directly to them, a key requirement of strong isolation. We use Hyper-V for CPU, memory and IO isolation (like network and storage), delivering the same level of isolation found in VMs. Like for VMs, the host only exposes a small, constrained interface to the container for communication and sharing of host resources. This very limited sharing means Hyper-V Containers have a bit less efficiency in startup times and density than Windows Server Containers, but the isolation required to allow untrusted and \u201chostile multi-tenant\u201d applications to run on the same host.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So aren\u2019t Hyper-V Containers the same as VMs? Besides the optimizations to the OS that result from it being fully aware that it\u2019s in a container and not a physical machine, Hyper-V Containers will be deployed using the magic of Docker and can use the exact same packages that run in Windows Server Containers. Thus, the tradeoff of level of isolation versus efficiency\/agility is a deploy-time decision, not a development-time decision \u2013 one made by the owner of the host.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"orchestration\">Orchestration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As they\u2019ve adopted containers, customers have discovered a challenge. When they deploy dozens, hundreds or thousands of containers that make up an application, tracking and managing the deployment requires advances in both management and orchestration. Container orchestration has become an exciting new area of innovation with multiple options and solutions. Container orchestrators are assigned a pool of servers (VMs or bare metal servers), commonly called a \u201ccluster,\u201d and \u201cschedule\u201d deployment of containers onto those servers. Some orchestrators go further and configure networking between containers on different servers, while some include load balancing, container name resolution, rolling updates and more. Some are extensible and enable application frameworks to bring these additional capabilities.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While a deeper discussion on orchestration solutions might require a whole other post on its own, here\u2019s a quick outline a few of the technologies, all supported on top of Azure:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/www.docker.com\/docker-compose\">Docker Compose<\/a> enables the definition of simple multi-container applications. <a href=\"https:\/\/www.docker.com\/docker-swarm\">Docker Swarm<\/a> manages and organizes Docker containers across multiple hosts via the same API used by a single Docker host. <a href=\"https:\/\/azure.microsoft.com\/blog\/2015\/02\/26\/sunny-and-swarmy-in-azure\">Swarm and Compose come together to offer a complete orchestration technology built by Docker<\/a>.<\/li>\n\n\n\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/mesos.apache.org\/\">Mesos<\/a> is an orchestration and management solution that actually predates Docker, but has recently added support for Docker into its built-in application framework Marathon. It is an open and community-driven solution built by <a href=\"https:\/\/mesosphere.com\/\">Mesosphere<\/a>. We recently demonstrated integration with <a href=\"https:\/\/mesosphere.com\/blog\/2015\/04\/29\/mesosphere-dcos-debuts-on-microsoft-azure\/\">Mesos and DCOS on Azure<\/a>.<\/li>\n\n\n\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/kubernetes.io\/\">Kubernetes<\/a> is an open-source solution built by Google offering container grouping into \u201cPods\u201d for management across multiple hosts. <a href=\"https:\/\/azure.microsoft.com\/blog\/2014\/07\/10\/azure-collaboration-with-google-and-docker\/\">This is also supported on Azure<\/a>.<\/li>\n\n\n\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/deis.com\/\">Deis<\/a> is an open source PaaS platform to deploy and manage applications integrated with Docker. <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/virtual-machines-deis-cluster\/\">We have an easy way to deploy a Deis cluster on Azure<\/a>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">We are excited to have support in Azure for most of the popular orchestration solutions and expect to get more engaged in these communities as we see interest and usage increase over time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"microservices\">Microservices<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The more immediately lucrative usage for containers has been focused on simplifying DevOps with easy developer to test to production flows for services deployed in the cloud or on-premises. But there is another growing scenario where containers are becoming very compelling. Microservices is an approach to application development where every part of the application is deployed as a fully self-contained component, called a microservice that can be individually scaled and updated. For example, the subsystem of an application that receives requests from the public Internet might be separate from the subsystem putting the request on to a queue for a backend subsystem to read and drop them into a database. When the application is constructed using microservices, each subsystem is a microservice. In a dev\/test environment on a single box, the microservices might each have one instance, but when run in production each can scale out to different numbers of instances across a cluster of servers depending on their resource demands as customer request levels rise and fall. If different teams produce them, the teams can also independently update them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Microservices is not a new approach to programming, nor is it tied explicitly to containers, but the benefits of Docker containers are magnified when applied to a complex microservice-based application. Agility means that a microservice can quickly scale out to meet increased load, the namespace and resource isolation of containers prevents one microservice instance from interfering with others, and use of the Docker packaging format and APIs unlock the Docker ecosystem for the microservice developer and application operator. With a good microservice architecture, customers can solve the management, deployment, orchestration and patching needs of a container-based service with reduced risk of availability loss while maintaining high agility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Today there are several solutions for building application models using microservices and we partner with many of them on Azure. Docker Compose and Mesosphere Marathon are two examples. Shortly before \/\/build, we <a href=\"https:\/\/azure.microsoft.com\/blog\/2015\/04\/20\/announcing-azure-service-fabric-reducing-complexity-in-a-hyper-scale-world\/\">announced<\/a> and then released a developer preview of Service Fabric, our own microservices application platform. It includes a rich collection of microservice lifecycle management capabilities, including rolling update with rollback, partitioning, placement constraints and more. Notably, in addition to stateless microservices, it supports stateful microservices, which are differentiated by the fact that the microservice manages data that\u2019s co-resident with it on the same server. In fact, Service Fabric is the only PaaS platform that offers stateful microservices with state management and replication frameworks built directly into its cluster management. We developed this application model for internal services to be able to scale to hyperscale with stateful replication, and services like Cortana, Azure SQL Database and Skype for Business are built on it. We will release a public preview of Service Fabric later this year, but in the meantime you can check out more on Service Fabric <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/service-fabric-overview\/\">here<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I hope the above helps paint a useful picture of Microsoft\u2019s container vision, the most common container use cases, and also some of the emerging industry trends around containers. As always, we\u2019d love your feedback, particularly if there are any areas where you\u2019d like to learn more.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>From the basics of what containers are and how they work, to the scenarios they\u2019re being most widely used for today, to emerging trends supporting \u201ccontainerization\u201d, I thought I\u2019d share my perspectives to better help you understand how to best embrace this important cloud computing development.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","footnotes":"","msx_community_cta_settings":[]},"categories":[1467],"tags":[],"audience":[3055,3056],"content-type":[],"product":[1455],"tech-community":[],"topic":[],"coauthors":[21],"class_list":["post-5287","post","type-post","status-publish","format-standard","hentry","category-compute","audience-developers","audience-it-implementors","product-virtual-machines","review-flag-1680286581-295","review-flag-1680286581-364","review-flag-1-1680286581-825","review-flag-alway-1680286580-106","review-flag-anywh-1680286580-635","review-flag-fall-1680286584-980","review-flag-lever-1680286579-649","review-flag-machi-1680286585-314","review-flag-microsofts","review-flag-new-1680286579-546","review-flag-partn-1680286579-901","review-flag-partn-1680286579-300","review-flag-publi-1680286584-566","review-flag-vm-1680286585-143"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Containers: Docker, Windows and Trends | Microsoft Azure Blog<\/title>\n<meta name=\"description\" content=\"From the basics of what containers are and how they work, to the scenarios they\u2019re being most widely used for today, to emerging trends supporting \u201ccontainerization\u201d, I thought I\u2019d share my perspectives to better help you understand how to best embrace this important cloud computing development.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Containers: Docker, Windows and Trends | Microsoft Azure Blog\" \/>\n<meta property=\"og:description\" content=\"From the basics of what containers are and how they work, to the scenarios they\u2019re being most widely used for today, to emerging trends supporting \u201ccontainerization\u201d, I thought I\u2019d share my perspectives to better help you understand how to best embrace this important cloud computing development.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Azure Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/microsoftazure\" \/>\n<meta property=\"article:published_time\" content=\"2015-08-17T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-23T20:10:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp\" \/>\n<meta name=\"author\" content=\"Mark Russinovich\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@azure\" \/>\n<meta name=\"twitter:site\" content=\"@azure\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mark Russinovich\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/\"},\"author\":[{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/mark-russinovich\/\",\"@type\":\"Person\",\"@name\":\"Mark Russinovich\"}],\"headline\":\"Containers: Docker, Windows and Trends\",\"datePublished\":\"2015-08-17T00:00:00+00:00\",\"dateModified\":\"2024-07-23T20:10:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/\"},\"wordCount\":2842,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp\",\"articleSection\":[\"Compute\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/\",\"name\":\"Containers: Docker, Windows and Trends | Microsoft Azure Blog\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp\",\"datePublished\":\"2015-08-17T00:00:00+00:00\",\"dateModified\":\"2024-07-23T20:10:08+00:00\",\"description\":\"From the basics of what containers are and how they work, to the scenarios they\u2019re being most widely used for today, to emerging trends supporting \u201ccontainerization\u201d, I thought I\u2019d share my perspectives to better help you understand how to best embrace this important cloud computing development.\",\"breadcrumb\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#primaryimage\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp\",\"contentUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog home\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Containers\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/containers\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Containers: Docker, Windows and Trends\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"name\":\"Microsoft Azure Blog\",\"description\":\"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.\",\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\",\"name\":\"Microsoft Azure Blog\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"contentUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"width\":512,\"height\":512,\"caption\":\"Microsoft Azure Blog\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/microsoftazure\",\"https:\/\/x.com\/azure\",\"https:\/\/www.instagram.com\/microsoftdeveloper\/\",\"https:\/\/www.linkedin.com\/company\/16188386\",\"https:\/\/www.youtube.com\/user\/windowsazure\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117\",\"name\":\"shakir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"caption\":\"shakir\"},\"sameAs\":[\"https:\/\/azure.microsoft.com\"],\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Containers: Docker, Windows and Trends | Microsoft Azure Blog","description":"From the basics of what containers are and how they work, to the scenarios they\u2019re being most widely used for today, to emerging trends supporting \u201ccontainerization\u201d, I thought I\u2019d share my perspectives to better help you understand how to best embrace this important cloud computing development.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/","og_locale":"en_US","og_type":"article","og_title":"Containers: Docker, Windows and Trends | Microsoft Azure Blog","og_description":"From the basics of what containers are and how they work, to the scenarios they\u2019re being most widely used for today, to emerging trends supporting \u201ccontainerization\u201d, I thought I\u2019d share my perspectives to better help you understand how to best embrace this important cloud computing development.","og_url":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/","og_site_name":"Microsoft Azure Blog","article_publisher":"https:\/\/www.facebook.com\/microsoftazure","article_published_time":"2015-08-17T00:00:00+00:00","article_modified_time":"2024-07-23T20:10:08+00:00","og_image":[{"url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp","type":"","width":"","height":""}],"author":"Mark Russinovich","twitter_card":"summary_large_image","twitter_creator":"@azure","twitter_site":"@azure","twitter_misc":{"Written by":"Mark Russinovich","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#article","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/"},"author":[{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/mark-russinovich\/","@type":"Person","@name":"Mark Russinovich"}],"headline":"Containers: Docker, Windows and Trends","datePublished":"2015-08-17T00:00:00+00:00","dateModified":"2024-07-23T20:10:08+00:00","mainEntityOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/"},"wordCount":2842,"commentCount":0,"publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#primaryimage"},"thumbnailUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp","articleSection":["Compute"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/","name":"Containers: Docker, Windows and Trends | Microsoft Azure Blog","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#primaryimage"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#primaryimage"},"thumbnailUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp","datePublished":"2015-08-17T00:00:00+00:00","dateModified":"2024-07-23T20:10:08+00:00","description":"From the basics of what containers are and how they work, to the scenarios they\u2019re being most widely used for today, to emerging trends supporting \u201ccontainerization\u201d, I thought I\u2019d share my perspectives to better help you understand how to best embrace this important cloud computing development.","breadcrumb":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#primaryimage","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp","contentUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2015\/08\/App-Instances-on-Host_thumb.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/containers-docker-windows-and-trends\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog home","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/"},{"@type":"ListItem","position":2,"name":"Containers","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/containers\/"},{"@type":"ListItem","position":3,"name":"Containers: Docker, Windows and Trends"}]},{"@type":"WebSite","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","name":"Microsoft Azure Blog","description":"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.","publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization","name":"Microsoft Azure Blog","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","contentUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","width":512,"height":512,"caption":"Microsoft Azure Blog"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/microsoftazure","https:\/\/x.com\/azure","https:\/\/www.instagram.com\/microsoftdeveloper\/","https:\/\/www.linkedin.com\/company\/16188386","https:\/\/www.youtube.com\/user\/windowsazure"]},{"@type":"Person","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117","name":"shakir","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4","url":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","caption":"shakir"},"sameAs":["https:\/\/azure.microsoft.com"],"url":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/"}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Azure Blog","distributor_original_site_url":"https:\/\/azure.microsoft.com\/en-us\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/5287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/comments?post=5287"}],"version-history":[{"count":0,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/5287\/revisions"}],"wp:attachment":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/media?parent=5287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/categories?post=5287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tags?post=5287"},{"taxonomy":"audience","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/audience?post=5287"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/content-type?post=5287"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/product?post=5287"},{"taxonomy":"tech-community","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tech-community?post=5287"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/topic?post=5287"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/coauthors?post=5287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}