Windows 및 컨테이너Windows and containers

컨테이너는 온-프레미스 및 클라우드에서 다양 한 환경에서 Windows 및 Linux 응용 프로그램을 패키지화 하 고 실행 하기 위한 기술입니다.Containers are a technology for packaging and running Windows and Linux applications across diverse environments on-premises and in the cloud. 컨테이너는 앱을 더 쉽게 개발, 배포 및 관리할 수 있도록 하는 간단 하 고 격리 된 환경을 제공 합니다.Containers provide a lightweight, isolated environment that makes apps easier to develop, deploy, and manage. 컨테이너는 빠르게 시작 하 고 중지 하므로 수요 변화에 신속 하 게 적응할 필요가 있는 앱에 적합 합니다.Containers start and stop quickly, making them ideal for apps that need to rapidly adapt to changing demand. 또한 컨테이너의 간단한 특성을 통해 인프라의 밀도와 활용도를 높이는 데 유용한 도구를 만들 수 있습니다.The lightweight nature of containers also make them a useful tool for increasing the density and utilization of your infrastructure.

클라우드 또는 온-프레미스에서 컨테이너를 실행 하는 방법을 보여 주는 그래픽으로, 거의 모든 언어로 작성 된 monolithic 앱 또는 마이크로 서비스를 지원 합니다.

Microsoft 컨테이너 환경The Microsoft container ecosystem

Microsoft는 컨테이너에서 앱을 개발 하 고 배포 하는 데 도움이 되는 다양 한 도구와 플랫폼을 제공 합니다.Microsoft provides a number of tools and platforms to help you develop and deploy apps in containers:

  • Windows 10에서 windows 기반 또는 Linux 기반 컨테이너를 실행 하면 Docker 데스크톱을 사용 하 여 개발 및 테스트 하 고 windows에 기본 제공 되는 컨테이너 기능을 사용할 수 있습니다.Run Windows-based or Linux-based containers on Windows 10 for development and testing using Docker Desktop, which makes use of containers functionality built-in to Windows. Windows Server에서 기본적으로 컨테이너를 실행할수도 있습니다.You can also run containers natively on Windows Server.

  • Docker, Docker 작성, Kubernetes, 투구 및 기타 유용한 기능을 포함 하는 Visual Studio 및 Visual Studio 코드 의 강력한 컨테이너 지원을 사용 하 여 Windows 기반 컨테이너를 개발, 테스트, 게시 및 배포 합니다. 신기술.Develop, test, publish, and deploy Windows-based containers using the powerful container support in Visual Studio and Visual Studio Code, which include support for Docker, Docker Compose, Kubernetes, Helm, and other useful technologies.

  • 다른 사용자가 사용할 수 있는 공용 DockerHub에 앱을 컨테이너 이미지로 게시 하 고, visual Studio 및 Visual studio 코드 내에서 직접 푸시 및 가져오기에 대 한 사설 Azure 컨테이너 레지스트리 를 배포 합니다. .Publish your apps as container images to the public DockerHub for others to use, or to a private Azure Container Registry for your org's own development and deployment, pushing and pulling directly from within Visual Studio and Visual Studio Code.

  • Azure 또는 기타 클라우드의 크기 조정에서 컨테이너 배포 :Deploy containers at scale on Azure or other clouds:

    • Azure 컨테이너 레지스트리와 같은 컨테이너 레지스트리에서 앱 (컨테이너 이미지)을 가져온 다음 orchestrator ( Azure Kubernetes Service) (AKS) (Windows 기반 앱의 미리 보기) 또는 azure 서비스 등의 조정자를 사용 하 여 확장 하 여 배포 하 고 관리 합니다. 패브릭.Pull your app (container image) from a container registry, such as the Azure Container Registry, and then deploy and manage it at scale using an orchestrator such as Azure Kubernetes Service (AKS) (in preview for Windows-based apps) or Azure Service Fabric.
    • Azure Kubernetes 서비스는 Azure 가상 컴퓨터에 컨테이너를 배포 하 고 크기가 수십 개, 수백 개 또는 수천 개인 경우를 통해 관리 합니다.Azure Kubernetes Service deploys containers to Azure virtual machines and manages them at scale, whether that's dozens of containers, hundreds, or even thousands. Azure 가상 컴퓨터는 사용자 지정 Windows Server 이미지 (Windows 기반 앱을 배포 하는 경우) 또는 사용자 지정 Ubuntu Linux 이미지 (Linux 기반 앱을 배포 하는 경우)를 실행 합니다.The Azure virtual machines run either a customized Windows Server image (if you're deploying a Windows-based app), or a customized Ubuntu Linux image (if you're deploying a Linux-based app).
  • AKS Engine (Linux 컨테이너로 미리 보기에서) 또는 OpenShift를 사용 하는 Azure 스택의 azure stack 을 사용 하 여 온 -프레미스 배포 컨테이너 입니다.Deploy containers on-premises by using Azure Stack with the AKS Engine (in preview with Linux containers) or Azure Stack with OpenShift. Windows Server ( windows의 Kubernetes참조)에서 직접 Kubernetes를 설정할 수도 있으며, Openshift 컨테이너 플랫폼 에서도 redhat Windows 컨테이너 를 실행 하는 데 대 한 지원 작업을 수행 하 고 있습니다.You can also set up Kubernetes yourself on Windows Server (see Kubernetes on Windows), and we're working on support for running Windows containers on RedHat OpenShift Container Platform as well.

컨테이너 작동 방식How containers work

컨테이너는 호스트 운영 체제에서 응용 프로그램을 실행 하기 위한 격리 된 경량 사일로 (silo)입니다.A container is an isolated, lightweight silo for running an application on the host operating system. 컨테이너는 호스트 운영 체제의 커널 (이 다이어그램에 표시 된 것 처럼 운영 체제의 덮여 있는 것으로 간주할 수 있음) 위에 빌드됩니다.Containers build on top of the host operating system's kernel (which can be thought of as the buried plumbing of the operating system), as shown in this diagram.

컨테이너를 커널을 위에서 실행 하는 방법을 보여 주는 아키텍처 다이어그램

컨테이너에서 호스트 운영 체제의 커널을 공유 하는 동안 컨테이너는 unfettered에 대 한 액세스 권한을 받지 않습니다.While a container shares the host operating system's kernel, the container doesn't get unfettered access to it. 대신 컨테이너는 격리 된 상태로 시스템의 일부 경우에 대 한 가상화 – 뷰를 가져옵니다.Instead, the container gets an isolated–and in some cases virtualized–view of the system. 예를 들어 컨테이너는 파일 시스템 및 레지스트리의 가상화 된 버전에 액세스할 수 있지만, 변경 사항은 컨테이너에만 영향을 미치며 중지할 때는 취소 됩니다.For example, a container can access a virtualized version of the file system and registry, but any changes affect only the container and are discarded when it stops. 데이터를 저장 하기 위해 컨테이너는 Azure Disk 또는 파일 공유 ( azure Files포함) 등의 영구 저장소를 탑재할 수 있습니다.To save data, the container can mount persistent storage such as an Azure Disk or a file share (including Azure Files).

컨테이너는 커널의 맨 위에 빌드 되지만, 커널에서 앱을 실행 하는 데 필요한 모든 Api와 서비스를 제공 하지는 않으며,이는 대부분의 경우 사용자 모드에서 커널을 위쪽으로 실행 되는 시스템 파일 (라이브러리)에 의해 제공 됩니다.A container builds on top of the kernel, but the kernel doesn't provide all of the APIs and services an app needs to run–most of these are provided by system files (libraries) that run above the kernel in user mode. 컨테이너는 호스트의 사용자 모드 환경에서 격리 되므로 컨테이너에는 기본 이미지 라는 것으로 패키지 된 이러한 사용자 모드 시스템 파일의 고유한 복사본이 필요 합니다.Because a container is isolated from the host's user mode environment, the container needs its own copy of these user mode system files, which are packaged into something known as a base image. 기본 이미지는 컨테이너가 빌드될 기본 계층으로 사용 되며 커널에서 제공 되지 않는 운영 체제 서비스를 제공 합니다.The base image serves as the foundational layer upon which your container is built, providing it with operating system services not provided by the kernel. 그러나 나중에 컨테이너 이미지에 대해 자세히 알아보세요.But we'll talk more about container images later.

컨테이너 대 가상 컴퓨터Containers vs. virtual machines

컨테이너와 대조적으로 Vm (가상 머신)은이 다이어그램에 표시 된 대로 자체 커널을 포함 하 여 완전 한 운영 체제를 실행 합니다.In contrast to a container, a virtual machine (VMs) runs a complete operating system–including its own kernel–as shown in this diagram.

Vm이 호스트 운영 체제 옆의 전체 운영 체제를 실행 하는 방법을 보여 주는 아키텍처 다이어그램

컨테이너와 가상 컴퓨터에는 각각 사용이 포함 되며, 특히 클라우드에서 컨테이너를 실행할 때 컨테이너의 여러 배포는 하드웨어에서 직접 실행 하는 대신 호스트 운영 체제로 가상 컴퓨터를 사용 합니다.Containers and virtual machines each have their uses–in fact, many deployments of containers use virtual machines as the host operating system rather than running directly on the hardware, especially when running containers in the cloud.

이러한 보완적인 기술의 유사점과 차이점에 대 한 자세한 내용은 컨테이너 vs 가상 컴퓨터를 참조 하세요.For more details on the similarities and differences of these complementary technologies, see Containers vs. virtual machines.

컨테이너 이미지Container images

컨테이너 이미지에서 모든 컨테이너가 만들어집니다.All containers are created from container images. 컨테이너 이미지는 로컬 컴퓨터 또는 원격 컨테이너 레지스트리에 있는 계층의 스택으로 구성 된 파일 번들입니다.Container images are a bundle of files organized into a stack of layers that reside on your local machine or in a remote container registry. 컨테이너 이미지는 앱, 앱, 앱의 런타임 또는 종속성을 지 원하는 데 필요한 사용자 모드 운영 체제 파일과 앱이 제대로 실행 되는 데 필요한 기타 모든 기타 구성 파일으로 구성 됩니다.The container image consists of the user mode operating system files needed to support your app, your app, any runtimes or dependencies of your app, and any other miscellaneous configuration file your app needs to run properly.

Microsoft는 고유한 컨테이너 이미지를 만들기 위한 출발점으로 사용할 수 있는 기본 이미지 라는 여러 이미지를 제공 합니다.Microsoft offers several images (called base images) that you can use as a starting point to build your own container image:

  • Windows -windows api 및 시스템 서비스 (서버 역할 제외)의 전체 집합을 포함 합니다.Windows - contains the full set of Windows APIs and system services (minus server roles).
  • Windows Server Core -전체 .net framework와 같은 Windows server api의 하위 집합을 포함 하는 작은 이미지입니다.Windows Server Core - a smaller image that contains a subset of the Windows Server APIs–namely the full .NET framework. 또한 대부분의 서버 역할은 sadly 하지만 팩스 서버는 포함 하지 않습니다.It also includes most server roles, though sadly to few, not Fax Server.
  • Nano 서버 -.Net Core api와 일부 서버 역할에 대 한 지원이 포함 된 최소 Windows Server 이미지입니다.Nano Server - the smallest Windows Server image, with support for the .NET Core APIs and some server roles.
  • Windows 10 IoT Core -ARM 또는 x86/x64 프로세서를 실행 하는 디바이스의 소규모 인터넷을 위한 하드웨어 제조업체에서 사용 하는 windows 버전입니다.Windows 10 IoT Core - a version of Windows used by hardware manufacturers for small Internet of Things devices that run ARM or x86/x64 processors.

앞에서 언급 한 것 처럼 컨테이너 이미지는 일련의 레이어로 구성 됩니다.As mentioned earlier, container images are composed of a series of layers. 각 계층에는 함께 겹친 경우 컨테이너 이미지를 나타내는 파일 집합이 포함 되어 있습니다.Each layer contains a set of files that, when overlaid together, represent your container image. 컨테이너의 계층화 된 특성 때문에 항상 기본 이미지를 대상으로 지정 하 여 Windows 컨테이너를 빌드할 필요는 없습니다.Because of the layered nature of containers, you don't have to always target a base image to build a Windows container. 대신 원하는 프레임 워크를 이미가지고 있는 다른 이미지를 대상으로 할 수 있습니다.Instead, you could target another image that already carries the framework you want. 예를 들어 .NET 팀은 .net core 런타임을 전달 하는 .net core 이미지 를 게시 합니다.For example, the .NET team publishes a .NET core image that carries the .NET core runtime. 이 컨테이너 이미지의 레이어를 다시 사용할 수 있도록 사용자가 .NET core를 설치 하는 프로세스를 복제 하지 않아도 됩니다.It saves users from needing to duplicate the process of installing .NET core–instead they can reuse the layers of this container image. .NET core 이미지 자체는 Nano 서버에 따라 빌드됩니다.The .NET core image itself is built based upon Nano Server.

자세한 내용은 컨테이너 기본 이미지를 참조 하세요.For more details, see Container Base Images.

컨테이너 사용자Container users

개발자를 위한 컨테이너Containers for developers

컨테이너를 통해 개발자는 고품질 앱을 더 빠르게 빌드하고 제공할 수 있습니다.Containers help developers build and ship higher-quality apps, faster. 컨테이너를 사용 하 여 개발자는 환경에 따라 초에 배포 하는 컨테이너 이미지를 만들 수 있습니다.With containers, developers can create a container image that deploys in seconds, identically across environments. 컨테이너는 팀 간에 코드를 공유 하 고 호스트 파일 시스템에 영향을 주지 않고 개발 환경을 부트스트랩 하는 간단한 메커니즘 역할을 합니다.Containers act as an easy mechanism to share code across teams and to bootstrap a development environment without impacting your host filesystem.

컨테이너는 이식 가능 하 고 다양 한 언어로 작성 된 앱을 실행할 수 있으며, Windows 10, 버전 1607 이상 또는 Windows 2016 이상을 실행 하는 컴퓨터와 호환 됩니다.Containers are portable and versatile, can run apps written in any language, and they're compatible with any machine running Windows 10, version 1607 or later, or Windows 2016 or later. 개발자는 자신의 랩톱이 나 데스크톱에서 컨테이너를 로컬로 만들고 테스트 한 다음 동일한 컨테이너 이미지를 해당 회사의 사설 클라우드, 공용 클라우드 또는 서비스 공급자에 배포할 수 있습니다.Developers can create and test a container locally on their laptop or desktop, and then deploy that same container image to their company's private cloud, public cloud, or service provider. 컨테이너의 자연 민첩성은 가상화 된 대규모 클라우드 환경에서 최신 앱 개발 패턴을 지원 합니다.The natural agility of containers supports modern app development patterns in large-scale, virtualized cloud environments.

IT 전문가를 위한 컨테이너Containers for IT professionals

컨테이너는 관리 하는 것이 더 쉬우며 하드웨어 리소스를 더 완벽 하 게 활용 하는 인프라를 만드는 데 도움이 됩니다.Containers help admins create infrastructure that's easier to update and maintain, and that more fully utilizes hardware resources. IT 전문가는 컨테이너를 사용 하 여 개발, QA, 프로덕션 팀에 게 표준화 된 환경을 제공할 수 있습니다.IT professionals can use containers to provide standardized environments for their development, QA, and production teams. 컨테이너를 사용 하 여 시스템 관리자는 운영 체제 설치 및 기본 인프라의 차이를 추상화 합니다.By using containers, systems administrators abstract away differences in operating system installations and the underlying infrastructure.

컨테이너 오케스트레이션Container orchestration

컨테이너 기반 환경을 설정 하는 경우 Orchestrators는 인프라의 중요 한 부분입니다.Orchestrators are a critical piece of infrastructure when setting up a container-based environment. Docker 및 Windows를 사용 하 여 몇 가지 컨테이너를 수동으로 관리할 수 있지만, 앱은 종종 orchestrators에 포함 된 다섯 개, 10 개 또는 수백 개의 컨테이너를 사용 합니다.While you can manage a few containers manually using Docker and Windows, apps often make use of five, ten, or even hundreds of containers, which is where orchestrators come in.

컨테이너 orchestrators는 확장성 및 프로덕션 환경에서 컨테이너를 관리 하는 데 도움이 되도록 작성 되었습니다.Container orchestrators were built to help manage containers at scale and in production. Orchestrators는 다음과 같은 기능을 제공 합니다.Orchestrators provide functionality for:

  • 배율에 배치Deploying at scale
  • 작업량 예약Workload scheduling
  • 상태 모니터링Health monitoring
  • 노드에 장애가 발생 했을 때 장애 조치Failing over when a node fails
  • 확대 또는 축소Scaling up or down
  • 네트워킹Networking
  • 서비스 검색Service discovery
  • 앱 업그레이드 조정Coordinating app upgrades
  • 클러스터 노드 선호도Cluster node affinity

Windows 컨테이너와 함께 사용할 수 있는 다양 한 orchestrators 있습니다. Microsoft에서 제공 하는 옵션은 다음과 같습니다.There are many different orchestrators that you can use with Windows containers; here are the options Microsoft provides:

Windows에서 컨테이너 체험Try containers on Windows

Windows Server 또는 Windows 10에서 컨테이너를 시작 하려면 다음을 참조 하세요.To get started with containers on Windows Server or Windows 10, see the following:

시나리오에 적합 한 Azure 서비스를 결정 하는 데 도움이 필요한 경우 azure 컨테이너 서비스 를 참조 하 고 응용 프로그램을 호스팅하는 데 사용할 Azure 서비스를 선택합니다.For help deciding which Azure services are right for your scenario, see Azure container services and Choosing what Azure services to use to host your application.