Использование контейнеров Windows Server 2016
Установка контейнера на Windows
Всю подробную информацию по развертыванию контейнеров можно найти на MSDN. Для установки нужен физический или виртуальный сервер Windows Server 2016. Windows Server 2016 поддерживает вложенную виртуализацию (Nested virtualization), но для таких контейнеров есть дополнительные требования (см.MSDN ). Как вариант можно использовать готовый образ в Azure – Windows Server 2016 Core with Containers.
Среди компонентов сервера есть нужный компонент, процесс установки которого стандартен.
1 |
PS> Install-WindowsFeature Containers |
Или отмечаем соответствующий пункт в мастере добавления ролей и компонентов.
Но в настоящее время необходимости в этом нет. Так как официально используется другой путь – при помощи компонентов Docker для установки поставщика которого используется модуль PowerShell. Поставщик обеспечит работу контейнеров на компьютере и установит Docker. Для работы Docker требуется обновление KB3176936. Поэтому перед началом работы лучше обновить ОС. Проще это сделать введя в консоли sconfig, затем выбрать пункт 6, и все обновления (нажать A и A). Ставим провайдер:
1 |
PS> Install-Module -Name DockerMsftProvider -Repository PSGallery -Force |
При помощи OneGet ставим последнюю версию Docker.
1 |
PS> Install-Package -Name docker -ProviderName DockerMsftProvider |
При этом автоматически установится и компонент Контейнер. После завершения потребуется перезагрузка.
1 |
PS> Restart-Computer -Force |
Файервол Windows блокирует порт 2375 на котором работает Docker. Открываем.
1 2 |
PS> netsh advfirewall firewall add rule name="docker engine" ↵ dir=in action=allow protocol=TCP localport=2375 |
При запуске демон Docker может не подключиться к npipe://, перенастроим чтобы он использовал pipe и TCP порт.
1 2 3 4 |
PS> Stop-Service docker PS> dockerd --unregister-service PS> dockerd -H npipe:// -H 0.0.0.0:2375 --register-service PS> Start-Service docker |
Проверяем:
1 |
PS> docker version |
Теперь можем работать как с Docker, только в Windows. Смотрим готовые образы в репозитарии Docker.
1 |
PS> docker search microsoft |
Получаем (необязательное действие) и запускае(смм нужный:
1 2 |
PS> docker pull microsoft/windowsservercore PS> docker run -it --name demo microsoft/iis powershell |
Получаем в результате доступ к командной строке PowerShell (вариант использование cmd вместо powershell). Если нужен контейнер Hyper-V то добавляем параметр —isolation=hyperv. Перенаправление портов работает также как и в Docker -p 80:80. Выполняем все настройки, выходим и сохраняем результат в образ.
1 2 |
PS C:\> exit PS> docker commit demo demo-1 |
Использовав docker push, можем отправить новый образ в облако Docker. Команда «docker ps -a» покажет все запущенные контейнеры. Установленные в локальной системе образы выводятся при помощи команды.
1 |
PS> docker images |
Возможность запускать приложения в безопасной изолированной среде, без увеличения нагрузки на ОС несомненно большой плюс новой версии Windows Server 2016. Поэтому новая фича будет востребована при развертывании и масштабировании сервисов и среди разработчиков. Остается дождаться окончательного релиза.
Услуги DevOps администратора, установка и настройка docker, поддержка, подробнее [email protected]