Начало работы с контейнерами (часть 5)
- Начало работы с контейнерами (часть 2)
- Начало работы с контейнерами (часть 6)
В конце моей предыдущей статьи я упомянул, что хотел бы сделать шаг назад и поговорить об устранении некоторых распространенных проблем. Когда я писал о своих намерениях, я первоначально предполагал рассказать о нескольких общих советах по устранению неполадок, но планировал оставить раздел об устранении неполадок относительно коротким, потому что хотел двигаться дальше и рассказать о процессе создания контейнера. Однако Microsoft сорвала мои планы, внеся некоторые изменения в техническую предварительную версию Windows Server 2016. На самом деле методы, которые я обсуждал в частях 3 и 4 этой серии статей, больше не работают.
Если вы вспомните часть 3, вы можете вспомнить, что я говорил о необходимости создания виртуального коммутатора и предоставил вам для этого следующую команду:
New-VMSwitch — Имя «Мой виртуальный коммутатор» — SwitchType NAT — NATSubnetAddress «172.16.0.0/12»
Изначально эта команда работала безупречно. Часть 3 даже содержала снимок экрана, показывающий его использование. Однако если вы попытаетесь ввести эту команду в Windows Server 2016 Technical Preview 5, вы получите сообщение об ошибке, показанное на рисунке A.
Рисунок A: Команда, использованная в предыдущей статье, больше не работает.
Так что дает? Почему вдруг перестала работать команда? Что ж, есть причина, по которой Microsoft называет текущую сборку Windows Server технической предварительной версией. Работа над Windows Server 2016 все еще продолжается, и Microsoft вносит изменения, совершенствуя операционную систему в рамках подготовки к ее окончательному выпуску. На самом деле PowerShell даже сообщает вам, что грядут некоторые изменения.
Другим командлетом, который я продемонстрировал в части 3 этой серии, был командлет Get-ContainerHost. Этот командлет по-прежнему работает в текущем техническом предварительном выпуске, но взгляните на рисунок B. Microsoft специально сообщает, что обновляет модуль Containers PowerShell, чтобы лучше согласовать его с Docker.
Рисунок B: Microsoft вносит некоторые изменения.
Поскольку Microsoft изменила некоторые методы, используемые для развертывания контейнеров, я хочу сделать шаг назад и показать вам новый способ работы. Однако имейте в виду, что вполне возможно, что Microsoft может внести дополнительные изменения.
Первым шагом в подготовке к использованию контейнеров является развертывание функции контейнеров. Этот процесс по-прежнему работает так же, как и в части 3. Вы можете развернуть требуемую функцию, введя следующие команды:
Контейнеры Install-WindowsFeature
Выключение /R
Следующим шагом в этом процессе является установка Docker. Первым шагом в этом является создание папки, которая может содержать исполняемые файлы Docker. Вы можете сделать это, введя следующую команду:
Новый элемент — Тип каталога — Путь «C:Program FilesDocker»
После создания этой папки вам нужно будет добавить ее в системный путь. Вы можете сделать это с помощью этой команды:
[Environment]::SetEnvironmentVariable("Путь", $env:Path + ";C:Program FilesDocker", [EnvironmentVariableTarget]::Machine)
Вы можете увидеть, как это выглядит на рисунке C.
Рисунок C: Вы должны добавить только что созданную папку Docker в системный путь.
На этом этапе вам нужно будет перезагрузить сервер. В противном случае PowerShell не распознает изменения, внесенные вами в системный путь. После перезагрузки сервера введите следующую команду:
$Env:Путь
Эта команда отображает системный путь. Вам нужно будет убедиться, что C:Program FilesDocker указан в системном пути, как показано на рисунке D.
Рисунок D: C:Program FilesDocker должен быть указан в системном пути.
Теперь вам нужно загрузить клиент Docker и демон Docker. Оба этих компонента будут помещены в ранее созданную папку C:Program FilesDocker. Чтобы загрузить эти компоненты через PowerShell, введите следующие команды:
Invoke-WebRequest https://aka.ms/tp5/b/docker -OutFile $env:ProgramFilesdockerdocker.exe
Invoke-WebRequest https://aka.ms/tp5/b/dockerd -OutFile $env:ProgramFilesdockerdockerd.exe
На рисунке E показано, как выглядит этот процесс. Когда загрузка завершится, вы можете проверить наличие файлов, введя следующую команду:
Get-ChildItem «C:Program FilesDocker»
Вы можете увидеть вывод команды на рисунке F.
Рисунок E: Так выглядит процесс загрузки.
Рисунок F. Файлы помещены в контейнер C:Program FilesDocker.
Теперь, когда необходимые компоненты загружены и проверены, следующие шаги, которые необходимо выполнить, — это зарегистрировать Docker в качестве службы Windows Server, а затем запустить эту службу. Вы можете выполнить эти задачи, введя следующие команды:
С:
CD
компакт-диск «Program FilesDocker»
DockerD — регистрация-сервис
Старт-Сервис Докер
Докер Get-Service
Стоит отметить, что команда, которая регистрирует службу Docker, чувствительна к регистру. Также стоит отметить, что перед словом регистр стоит два тире. Вы можете увидеть эти команды в действии на рисунке G. Вы заметите, что команда Get-Service Docker используется для подтверждения того, что служба существует и работает.
Рисунок G. Теперь служба Docker запущена.
Теперь, когда служба Docker запущена, нам нужно установить поставщика пакетов ContainerImage, а затем установить образы контейнеров. Это довольно простой, но несколько трудоемкий процесс. Еще раз, это то, о чем я рассказывал ранее в этой серии, но процесс немного изменился.
Фактические команды, которые вы будете запускать, будут различаться в зависимости от того, хотите ли вы установить образ Nano Server или образ Windows Server Core. Для демонстрации я установлю оба. Вот команды, используемые для этого:
Install-PackageProvider ContainerImage — Force
Install-ContainerImage – имя NanoServer
Install-ContainerImage — имя WindowsServerCore
Restart-Service Docker
Докер-образы
Вы можете увидеть вывод этих команд на рисунке H. Глядя на этот рисунок, вы заметите сообщение об ошибке, указывающее, что изображения не являются командой Docker. Причиной возникновения этой ошибки была чувствительность к регистру. Команды Docker (команды, начинающиеся со слова Docker) чувствительны к регистру. Командлеты PowerShell — нет.
Рисунок H. Вот результат установки образа.
Последнее, что нам нужно сделать, это пометить наши изображения словом Latest. Это избавляет нас от необходимости ссылаться на изображения по номеру версии каждый раз, когда мы их используем. Нет ничего плохого в том, чтобы ссылаться на номера версий, но это может быть утомительно. Вот как вы помечаете изображения:
тег докера наносервер: 10.0.14300.1010 наносервер: последний
Тег докера
Если вы посмотрите на рисунок I, вы увидите, что изображения сохранили свои исходные теги, поэтому мы не удаляем номера версий. Вместо этого мы создаем несколько дополнительных тегов.
Рисунок I: Мы добавили теги к нашим изображениям.
Вывод
Как видите, Microsoft внесла довольно много изменений в отношении контейнеров в Windows Server 2016. Честно говоря, я не удивлюсь, если Microsoft внесет еще несколько изменений до окончательного выпуска Windows Server 2016. Однако прямо сейчас процедуры, описанные в этой статье, позволят вам развернуть Docker и некоторые образы. В части 8 я продолжу обсуждение, показав вам, как создать контейнер.
- Начало работы с контейнерами (часть 2)
- Начало работы с контейнерами (часть 6)