Docker windows server container

Container host deployment: Windows Server

Deploying a Windows container host has different steps depending on the operating system and the host system type (physical or virtual). This document details deploying a Windows container host to either Windows Server 2016 or Windows Server Core 2016 on a physical or virtual system.

Install Docker

Docker is required in order to work with Windows containers. Docker consists of the Docker Engine and the Docker client.

To install Docker, we’ll use the OneGet provider PowerShell module. The provider will enable the containers feature on your machine and install Docker, which will require a reboot.

Open an elevated PowerShell session and run the following cmdlets.

Install the OneGet PowerShell module.

Use OneGet to install the latest version of Docker.

When the installation is complete, reboot the computer.

Install a specific version of Docker

There are currently two channels available for Docker EE for Windows Server:

  • 17.06 — Use this version if you’re using Docker Enterprise Edition (Docker Engine, UCP, DTR). 17.06 is the default.
  • 18.03 — Use this version if you’re running Docker EE Engine alone.

To install a specific version, use the RequiredVersion flag:

Installing specific Docker EE versions may require an update to previously installed DockerMsftProvider modules. To Update:

Update Docker

If you need to update Docker EE Engine from an earlier channel to a later channel, use both the -Update and -RequiredVersion flags:

Install base container images

Before working with Windows containers, a base image needs to be installed. Base images are available with either Windows Server Core or Nano Server as the container operating system. For detailed information on Docker container images, see Build your own images on docker.com.

With effect from May 2018, delivering a consistent and trustworthy acquisition experience, almost all of the Microsoft-sourced container images are served from the Microsoft Container Registry, mcr.microsoft.com, while maintaining the current discovery process via Docker Hub.

Windows Server 2019 and newer

To install the ‘Windows Server Core’ base image run the following:

To install the ‘Nano Server’ base image run the following:

Windows Server 2016 (versions 1607-1803)

To install the Windows Server Core base image run the following:

To install the Nano Server base image run the following:

Please read the Windows containers OS image EULA, which can be found here – EULA.

Hyper-V isolation host

You must have the Hyper-V role to run Hyper-V isolation. If the Windows container host is itself a Hyper-V virtual machine, nested virtualization will need to be enabled before installing the Hyper-V role. For more information on nested virtualization, see Nested Virtualization.

Nested virtualization

The following script will configure nested virtualization for the container host. This script is run on the parent Hyper-V machine. Ensure that the container host virtual machine is turned off when running this script.

Enable the Hyper-V role

To enable the Hyper-V feature using PowerShell, run the following cmdlet in an elevated PowerShell session.

SPBDEV Blog

Когда вы начнете работать с контейнерами, вы увидите много сходства между контейнером и виртуальной машиной; но, по сути, это два совершенно разных понятия. Контейнеры собираются изменить способ разработки Windows-разработок в следующем году, и они уже лежат в основе большой работы по ускорению процесса доставки. Мы объясним, как использовать функцию Windows Containers.

Читайте также:  Linux and user accounts

Введение

Контейнеры Windows революционизируют виртуализацию и процесс DevOps.

С Windows Server 2016 Microsoft представляет новую функцию под названием Windows Containers. Организации, которые обновляют свои серверы до этой новой операционной системы, смогут использовать контейнеры прямо из разработки в производственную среду.

Мы не будем углубляться в концепцию контейнеров, но в этой серии расскажем, как создавать, запускать, конвертировать и управлять вашими контейнерами Windows.

Основы Windows Containers

Прежде чем начать практическую сторону Windows Containers, мы должны вкратце осветить основы этой новой функции.

Контейнеры упаковывают программное обеспечение внутри полной файловой системы, которая содержит все, что нужно для запуска: код, среда выполнения, системные инструменты и системные библиотеки. Это гарантирует, что он всегда будет работать одинаково, независимо от среды, в которой он работает. Для достижения этой цели Windows использует изоляцию пространства имен, управление ресурсами и технологические процессы, чтобы ограничить файлы, сетевые порты и запущенные процессы, к которым может обращаться каждый контейнер, чтобы приложения, работающие в контейнерах, не могли взаимодействовать или видеть другие запущенные приложения в ОС хоста или в других контейнерах.

Виртуальные машины против контейнеров

Виртуальная машина является автономной и имеет собственную операционную систему, собственные приложения и собственные ресурсы (память, процессор и т. д.). Следующая схема показывает три виртуальных машины, размещенных на одном и том же физическом узле. Каждая виртуальная машина использует свою собственную ОС, библиотеки и т. Д. В результате они занимают значительное количество памяти.

Архитектура виртуальных машин

Довольно часто разработчикам приходится очень быстро тестировать приложения с разными версиями. Затем они должны попросить команду IT Ops развернуть одну или несколько машин (виртуальных или физических): это трудоемкий процесс. VM также потребляют значительные ресурсы, такие как память и пространство для хранения. Вот почему контейнеры удивительно полезны для процесса DevOps:

Контейнеры, напротив, не содержат никакой операционной системы, поэтому они потребляют меньше ресурсов, чем виртуальные машины на физическом хосте. Контейнеры просто используют хост-операционную систему, включая ядро и библиотеки, поэтому им не нужно загружать полную ОС.

Таким образом, преимущества контейнеров Windows заключаются в следующем:

  • Когда вы развертываете контейнер в рабочей среде, процесс отката очень прост. Вам просто нужно изменить сценарий развертывания и переустановить образ контейнера. Представьте себе процесс отката с виртуальными машинами? Вы должны перестроить всю машину (или вернуться к предыдущему состоянию или резервной копии).
  • Время запуска для контейнера Windows короче, чем у виртуальной машины.
  • Компактность использования облачных сценариев

Наконец, философия контейнера — это «одна услуга на контейнер»,

Windows Server Containers против Hyper-V Containers

Microsoft включает два разных типа контейнера. Первый тип основан на образовании Windows Server Core и называется контейнером Windows Server. Второй называется контейнером Hyper-V и основана на образовании Windows Nano Server. Контейнеры Hyper-V расширяют изоляцию, предоставляемую контейнерами Windows Server, запустив каждый контейнер в высоко оптимизированной виртуальной машине, чтобы обеспечить полную безопасную изоляцию. Ядро хоста контейнера не используется совместно с другими контейнерами Hyper-V. Если весь код, запущенный на хосте, надежен, то изоляция, предоставляемая контейнерами Windows, скорее всего, будет адекватной. Но если мы не доверяем коду, то контейнеры Hyper-V обеспечивают тот же уровень изоляции, что и виртуальные машины, но со многими преимуществами стандартных контейнеров.

Обратите внимание, что контейнеры Hyper-V управляются только Docker, а виртуальные машины Hyper-V управляются традиционными инструментами, такими как Hyper-V Manager. На практике загрузка Hyper-V контейнеров занимает больше времени, чем контейнеры Windows Server, но они намного быстрее, чем виртуальная машина с полной ОС (даже на Nano Server).

Docker

В октябре 2014 года Microsoft Corp и Docker объявили о стратегическом партнерстве, которое обеспечит гибкость, переносимость и безопасность платформы Docker для Windows Server.

Контейнеры Windows Server 2016, работающие от Docker Engine

Необходимо понимать, что Windows Server 2016 не может запускать контейнеры Linux в формате Docker, а только контейнеры Windows. Зачем? Поскольку для Linux-контейнеров требуются API-интерфейсы Linux из ядра-хозяина, а для контейнеров Windows Server требуются API-интерфейсы Windows для ядра Windows-хоста.

Читайте также:  Windows 10 search the web and windows

Однако процесс управления контейнерами Linux и Windows строго идентичен. Следующая схема описывает платформу Docker:

Платформа Docker

Ниже приведен краткий обзор жаргонов Windows Containers с их значением:

  • Container Host: физическая или виртуальная компьютерная система, настроенная с использованием функции Windows Containers
  • Container Image: Изображение контейнера содержит базовую операционную систему, приложение и все зависимости приложения, которые необходимы для быстрого развертывания контейнера.
  • Container OS Image: Изображение операционной системы контейнера — это среда операционной системы.
  • Container Registry: изображения контейнеров хранятся в реестре контейнеров и могут быть загружены по требованию. Это место, где публикуются изображения контейнеров. Реестр может быть удаленным или локальным.
  • Docker Engine: Это ядро ​​платформы Docker. Облегченное время выполнения контейнера, которое создает и запускает ваш контейнер.
  • Docker file: файлы Docker используются разработчиками для создания и автоматизации создания изображений контейнеров. С файлом Docker демон Docker может автоматически создавать образ контейнера.

Docker предоставляет центральный репозиторий, называемый Docker Hub ( https://hub.docker.com/ ), общедоступный реестр контейнерных приложений, поддерживаемый Docker. Контейнерные изображения могут быть опубликованы непосредственно в этом репозитории для совместного использования с сообществом Docker. На Docker Hub уже много изображений. Например:

Вы можете запустить частный репозиторий локально. Посредством этого URL-адреса Microsoft имеет собственный публичный и официальный репозиторий: https://hub.docker.com/u/microsoft/

Контейнеры Windows на практике

Перед развертыванием контейнеров Windows вы должны подготовить свою среду с некоторыми предварительными условиями. Для этого вы можете использовать физическую или виртуальную машину, это зависит от вас. В нашем случае мы будем использовать виртуальную машину со следующими характеристиками:

  • Система под управлением Windows Server 2016 (или Windows 10). Это самая важная предпосылка. Советуем вам работать с версией Datacenter из-за лицензирования (больше информации в конце статьи). Вы можете использовать Windows Server Core для своего контейнера, а не версию Windows, которая включает полный пользовательский интерфейс.
  • Разрешения администратора на хосте контейнера
  • Минимальное свободное пространство для хранения изображений и сценариев развертывания
  • Ваш сервер должен быть современным

Хорошо, давайте начнем с установки функции Windows Containers на хосте контейнера. Для выполнения этой задачи запустите следующую команду PowerShell:

Развертывание узла контейнера: Windows Server Container host deployment: Windows Server

Чтобы развернуть узел контейнера Windows, нужно выполнить разные действия в зависимости от типа операционной системы виртуальной машины и операционной системы сервера виртуальных машин (виртуальная и физическая). Deploying a Windows container host has different steps depending on the operating system and the host system type (physical or virtual). Этот документ описывает развертывание узла контейнера Windows в Windows Server 2016 или Windows Server Core 2016 в физической или виртуальной системе. This document details deploying a Windows container host to either Windows Server 2016 or Windows Server Core 2016 on a physical or virtual system.

Установка Docker Install Docker

Docker необходим для работы с контейнерами Windows. Docker is required in order to work with Windows containers. Docker состоит из подсистемы Docker Engine и клиента Docker. Docker consists of the Docker Engine and the Docker client.

Для установки Docker будет использоваться модуль PowerShell поставщика OneGet. To install Docker, we’ll use the OneGet provider PowerShell module. Поставщик обеспечит работу контейнеров на компьютере и установит Docker. После этого потребуется перезагрузка. The provider will enable the containers feature on your machine and install Docker, which will require a reboot.

Откройте сеанс PowerShell с повышенными правами и выполните следующие командлеты. Open an elevated PowerShell session and run the following cmdlets.

Установите модуль OneGet PowerShell. Install the OneGet PowerShell module.

С помощью OneGet установите последнюю версию Docker. Use OneGet to install the latest version of Docker.

После завершения установки перезагрузите компьютер. When the installation is complete, reboot the computer.

Установка конкретной версии Docker Install a specific version of Docker

На данный момент для Docker EE для Windows Server доступно два канала: There are currently two channels available for Docker EE for Windows Server:

  • 17.06 — используйте эту версию, если вы используете Docker Enterprise Edition (Docker Engine, UCP, DTR). 17.06 — Use this version if you’re using Docker Enterprise Edition (Docker Engine, UCP, DTR). 17.06 используется по умолчанию. 17.06 is the default.
  • 18.03 — используйте эту версию, если вы используете только подсистему Docker EE Engine. 18.03 — Use this version if you’re running Docker EE Engine alone.
Читайте также:  Windows 10 ярлык мой компьютер перемещается сам

Чтобы установить конкретную версию, используйте флаг RequiredVersion . To install a specific version, use the RequiredVersion flag:

Для установки конкретных версий Docker EE может потребоваться обновление ранее установленных модулей DockerMsftProvider. Installing specific Docker EE versions may require an update to previously installed DockerMsftProvider modules. Чтобы его выполнить, воспользуйтесь следующей командой: To Update:

Обновление Docker Update Docker

Если необходимо обновить более раннюю версию канала подсистемы Docker EE Engine до более поздней, используйте флаги -Update и -RequiredVersion . If you need to update Docker EE Engine from an earlier channel to a later channel, use both the -Update and -RequiredVersion flags:

Установка базовых образов контейнеров Install base container images

Перед началом работы с контейнерами Windows необходимо установить базовый образ. Before working with Windows containers, a base image needs to be installed. Базовые образы доступны при использовании Windows Server Core и Nano Server в качестве операционной системы контейнера. Base images are available with either Windows Server Core or Nano Server as the container operating system. Подробные сведения об образах контейнеров Docker см. в разделе Создание собственных образов на сайте docker.com. For detailed information on Docker container images, see Build your own images on docker.com.

Начиная с мая 2018 года, для обеспечения единообразных и надежных возможностей приобретения почти все образы контейнеров, полученные от Майкрософт, обслуживаются из Реестра контейнеров Майкрософт, mcr.microsoft.com. При этом текущий процесс обнаружения через Docker Hub остается неизменным. With effect from May 2018, delivering a consistent and trustworthy acquisition experience, almost all of the Microsoft-sourced container images are served from the Microsoft Container Registry, mcr.microsoft.com, while maintaining the current discovery process via Docker Hub.

Windows Server 2019 и более поздних версий Windows Server 2019 and newer

Чтобы установить базовый образ Windows Server Core, выполните следующую команду: To install the ‘Windows Server Core’ base image run the following:

Чтобы установить базовый образ Nano Server, выполните следующую команду: To install the ‘Nano Server’ base image run the following:

Windows Server 2016 (версии 1607–1803) Windows Server 2016 (versions 1607-1803)

Чтобы установить базовый образ Windows Server Core, выполните следующую команду: To install the Windows Server Core base image run the following:

Чтобы установить базовый образ Nano Server, выполните следующую команду: To install the Nano Server base image run the following:

Прочтите лицензионное соглашение для образов ОС контейнеров Windows на странице Лицензионное соглашение. Please read the Windows containers OS image EULA, which can be found here – EULA.

Узел с изоляцией Hyper-V Hyper-V isolation host

Для запуска изоляции Hyper-V необходима роль Hyper-V. You must have the Hyper-V role to run Hyper-V isolation. Если сам узел контейнера Windows является виртуальной машиной Hyper-V, перед установкой роли Hyper-V необходимо включить вложенную виртуализацию. If the Windows container host is itself a Hyper-V virtual machine, nested virtualization will need to be enabled before installing the Hyper-V role. Дополнительные сведения о вложенной виртуализации см. в статье Вложенная виртуализация. For more information on nested virtualization, see Nested Virtualization.

Вложенная виртуализация Nested virtualization

Приведенный ниже сценарий настраивает вложенную виртуализацию для узла контейнера. The following script will configure nested virtualization for the container host. Этот сценарий выполняется на родительском компьютере Hyper-V. This script is run on the parent Hyper-V machine. Перед запуском сценария убедитесь, что виртуальная машина узла контейнера отключена. Ensure that the container host virtual machine is turned off when running this script.

Включение роли Hyper-V Enable the Hyper-V role

Чтобы включить компонент Hyper-V с помощью PowerShell, выполните приведенный ниже командлет в сеансе PowerShell с повышенными правами. To enable the Hyper-V feature using PowerShell, run the following cmdlet in an elevated PowerShell session.

Оцените статью