Страницы

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

суббота, 11 января 2020 г.

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

#c_sharp #администрирование #docker #aspnet_core #docker_compose


У нас стартап и мы все еще активно пополняемся единомышленниками, но наш продукт
уже в скором времени близится к пилотному запуску. ПО наше состоит из следующих модулей:


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?
    


Ответы

Ответ 1



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.

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

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