Страницы

Поиск по вопросам

пятница, 1 марта 2019 г.

Docker: можно ли контейнер, созданный из Windows разместить на Linux?

У нас стартап и мы все еще активно пополняемся единомышленниками, но наш продукт уже в скором времени близится к пилотному запуску. ПО наше состоит из следующих модулей:
API — проект ASP.NET Core Web API 2 MySQL Web-клиент — приложение на Angular 5. Мы не скрестили ASP.NET Core и Angular, а разрабатываем веб-клиент Angular отдельно с Node.js на борту.
Стоит задача, организовать стратегию менее безболезненного развертывания всех трех узлов на инфраструктуре клиента, естественно с учетом того что будет написан туториал по инсталяции и что установкой будет заниматься техническая служба клиента.
Операционная система, которая будет крутиться на сервере клиента неизвестна и хотелось сделать некий универсальный процесс инсталяции который подходил бы как на Windows так и для Linux. Понятное дело, что за универсальность надо платить.
Как писал выше, мы только развивающийся отряд, и мы не имеем пока еще в арсенале хорошего специалиста-администратора с большим опытом решения подобных задач по развертыванию.
Docker. Докер, Docker и еще раз Докер. Естественно в первую очередь программисту приходит в голову это ПО одной из задач (я сказал одной из) которого является избавить программиста от проблем развертывания и дать максимально сфокусироваться на кодинге. Ох если бы это было так.
Прокси-сервер. И как не крути, но плюс к Kestrel/HTTP.sys какой-то из серверов Apache, IIS, nginx и т.д. все же нужен на сколько понял я. Даже если клиент планирует работать с нашим продуктом только внутри корпоративной сети. Дела с HTTP.sys конечно лучше: он не такой голый как Kestrel, но у нас то речь об универсальности, а HTTP.sys только для Windows. Пытался к примеру установить nginx на Windows Server в качестве эксперимента: мама родная, со стороны казалось, что я в первый раз вижу компьютер).

И если можно я задал бы два вопроса:
1) Первый вопрос он более общий, вы наверное догадались: что посоветуете?
2) А теперь, чтобы конкретизироваться: я сейчас работаю на Windows 10 и если я задумал использовать Docker, то я ведь правильно понимаю, что мне надо создать четыре контейнера
Контейнер с прокси-сервером (Apache, nginx или IIS) Контейнер с СУБД MySQL Контейнер с Angular-приложением Контейнер с проектом ASP.NET Core 2 Web API
Можно ли это сделать прямо из Windows? То есть будет ли работать контейнер созданный на Windows-машине на Linux?


Ответ

Docker под Windows может работать в двух режимах - Windows Containers и Linux Containers. Режимы переключаются через иконку в трее:

В режиме Windows Containers он собирает и хостит контейнеры прямо в текущей операционке. Собранные в этом режиме контейнеры нельзя разместить под Linux.
В режиме Linux Containers он на самом деле собирает и запускает контейнеры на линуксовой виртуалке - она видна в Hyper-V Manager. Собранные в этом режиме контейнеры можно разместить под Linux.
Под каждый рантайм есть свой набор тэгов - все доступные можно посмотреть на https://hub.docker.com/r/microsoft/aspnetcore/
Т.е. да, вы можете включить режим Linux Containers, собрать набор из 4-х контейнеров (взяв nginx в качестве прокси), и потом запустить все это под Linux.

Комментариев нет:

Отправить комментарий