Совсем недавно, 27 октября, Майкрософт анонсировал выход образов NAV (NAV images) под Dockers (NAV on Docker).

В течение следующих двух недель на Docker Hub (https://hub.docker.com/r/microsoft/dynamics-nav) будет выложено около 750 образов с разными версиями, кумулятивными апдейтами и локализациями для NAV 2016 и 2017. В дальнейшем, новые апдейты будут прежде всего выкладываться именно туда, так что привыкайте использовать именно эту технологию в первую очередь.

Что такое Docker? Прежде всего, это компания, которая предоставляет open-source контейнерную платформу для доступа к приложениям через гибридное облако. Это также название программного обеспечения для обработки контейнеров на Linux и Windows. #впередиидущие из Awara IT конечно же не могли пройти мимо этой новой технологии.

Давайте разберёмся, что из себя представляет технология Docker. Я сейчас не буду сыпать точными технологическими терминами, а постараюсь «на пальцах», с точки зрения нетехнического обывателя, рассказать о специфике и возможности этой технологии.

Если ранее вы использовали виртуализацию, то вам прекрасно знаком сценарий, когда, например, было нужно иметь несколько виртуальных машин для запуска разных приложений, которые конфликтуют между собой, будучи развёрнутыми на одном и том же хосте. Чтобы решить эту проблему, приходилось разворачивать несколько разных виртуальных машин на одном и том же хосте, и на разных виртуалках разворачивать разные приложения или разные версии приложений. Очевидно, что крутить несколько виртуалок – дороже, чем крутить одну. И Docker как раз и решает, в числе прочих, и эту задачу.

По сути, решение Docker – это псевдо-виртуалка, некий image, которая объединяет в себе некую общую «базу» функциональности – ядро (kernel), которую могут использовать «контейнеры» - приложение или приложения, завёрнутые в отдельную «оболочку», которые вы запускаете «на базе» image’а, как-бы в виде некоего "типа тенанта" к единой исходной виртуалке. Контейнеры изолированы друг от друга (каждый контейнер думает, что он один во вселенной). Соответственно, все эти контейнеры используют ресурсы единого ядра, и это становится намного более эффективным с точки зрения ресурсоёмкости.

Docker можно запускать как на платформе Windows, так и на платформе Linux, при этом исходный image и контейнеры будут одинаковыми. При этом, сам image может крутиться в облаке, например Microsoft Azure, и основная ресурсная нагрузка может оставаться там, высвобождая ресурсы вашего локального хоста. С точки зрения пользователя, это в некотором смысле похоже на RD Apps, при этом можно смонтировать много контейнеров с разными конфликтующими приложениями, и они на локальном хосте пользователя будут запускаться одновременно и не конфликтовать.

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

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

  • Физическая локальная машина (не виртуалка – nested virtualization Docker не поддерживает!)
  • Windows 10 Anniversary Update или выше: https://www.microsoft.com/en-us/software-download/windows10/
  • Visual Studio 2017: https://www.visualstudio.com/vs/whatsnew/
  • Включенная Контейнерная фича для Hyper-V:

  • Разрешённая виртуализация (Virtualization Enabled). Это можно проверить в Диспетчере Задач:

Если всё ок, то поехали.

Устанавливаем Docker for Windows – Stable channel: https://docs.docker.com/docker-for-windows/install/ . После того, как Docker установлен, он предложит сделать выход-вход в учётную запись – и Docker запустится автоматически.

Щёлкаем на иконку Docker в системном трее правой кнопкой

и переключаем его на Windows containers (по умолчанию он в Linux):

 

Далее, в открывшемся всплывающем окне нажимаем Sign In/Register – откроется менюшка:

Если у вас ещё нет аккаунта Docker (как, у вас ещё нет аккаунта??), то его нужно зарегистрировать, и потом ввести логин и пароль в менюшку логина. Всё закроется, останется только иконка в трее.

 

А теперь самое интересное – магия )).

Запускаем cmd, но обязательно с правами администратора (это важно!):

И вводим там следующее для подключения к Dynamics NAV версии W1:

docker run -e accept_eula=Y -m 3G microsoft/dynamics-nav

здесь параметр –m 3G – это количество памяти, выделяемое на хосте этому контейнеру, 1 Гбайт выделяется по умолчанию если без параметров, но для NAV этого мало поэтому – ставим 3G или 4G (на некоторых системах с 8 Гб оперативки 4G не выделяется, поэтому рекомендую в таких случаях уменьшать до 3х).

Активируется магия. Сначала Docker скажет, что базовый образ не найден и дойдёт его качать (это всё в сумме будет примерно на 6 Гб):

Когда всё скачается, то будет возможность открывать NAV! На экране должно появиться "Ready for connection!" и веб-ссылка с логином admin и паролем:

Смотрим, что у нас смонтировался контейнер и доступна веб-ссылка клиента. Запускаем её в браузере и наслаждаемся открывшимся NAVом. Который не установлен на локальном хосте, не запущен в виртуалке как таковой, но крутится в изолированном контейнере.


 Чтобы запустить версию с российской локализацией и кумулятивным апдейтом 04, набираем:

docker run -e accept_eula=Y -m 3G microsoft/dynamics-nav:2017-cu4-ru

И замечаем, что нам больше не надо скачивать весь образ - докачивается только кусочек самого приложения, который соответствует части российской локализации:

Хорошо, скажете вы, но я хочу большего - я хочу открывать среду разработки, я хочу смотреть на SQL, я хочу логиниться с моей Windows Authentication! И будете правы. И это всё возможно. Но об этом мы расскажем в следующий раз )). Следите за обновлениями.