Добавить в корзинуПозвонить
Найти в Дзене

Контейнеры Docker и Linux на Windows, с виртуальными машинами Hyper-V и без них

Если вы еще не слышали, контейнеры отличная вещь. Они являются хорошим и чистым способом получить надежное и гарантированное развертывание, не важно на какой хост-системе.
Если я хочу запустить свой мой ASP.NET основное приложение, я могу просто ввести "docker run-p 5000: 80 shanselman / demos" в командной строке, и оно запустится! У меня нет никаких опасений, что он не будет работать. Он

Если вы еще не слышали, контейнеры отличная вещь. Они являются хорошим и чистым способом получить надежное и гарантированное развертывание, не важно на какой хост-системе.

Если я хочу запустить свой мой ASP.NET основное приложение, я могу просто ввести "docker run-p 5000: 80 shanselman / demos" в командной строке, и оно запустится! У меня нет никаких опасений, что он не будет работать. Он запустится, и запустится очень хорошо.

Некоторые скептики контейнеров скажут, да, конечно, мы бы могли сделать то же самое с виртуальными машинами, но даже сегодня VHD (virtual hard drive) - это довольно говнястая вещь и включает в туеву кучу накладных расходов, которых нет у контейнера. Контейнеры происходят, и вы должны внимательно смотреть на них для своих развертываний.

docker run shanselman/demos
docker run shanselman/demos

Исторически в Windows контейнеры Linux запускались внутри виртуальной машины Hyper-V. Запуск контейнеров внутри виртуальной машины дает вам значительную изоляцию с некоторыми накладными расходами. Это хорошо для серверов, но меньше для моего ноутбука. Docker для Windows по большей части скрывает виртуальную машину, но она есть. Ваш контейнер работает внутри виртуальной машины Linux, которая работает в Hyper-V на самой Windows.

Hyper-V Manager
Hyper-V Manager

С последнем обновлением Windows 10 (или 10 Server) и бета-версией Docker для Windows, в Windows есть собственная поддержка контейнеров Linux. Это означает, что нет никакой виртуальной машины или Hyper-V (Если вы не нужно), поэтому контейнеры Linux работают на самой Windows, используя встроенную поддержку контейнеров Windows 10.

В данный момент вам нужно переключать "режимы" между Hyper V и собственными контейнерами, и вы не можете запускать контейнеры Linux и Windows бок о бок. Поговаривают, что это временно, и что Docker в какой-то момент будет поддерживать параллельный запуск контейнеров Linux и Windows. Это классно, потому что это открывает все виды крутых гибридных сценариев. Я мог бы запустить контейнер Windows Server с помощью .NET Framework ASP.NET приложение, которое разговаривает с контейнером Linux под управлением Redis или Postgres. Затем я мог бы поместить их все в Kubernetes в Azure, например.

Как только я включил контейнеры Linux на Windows в Docker, все просто работает.

Настройки Docker
Настройки Docker

Я могу легко и быстро запустить busybox или real Ubuntu (хотя Windows 10 уже поддерживает Ubuntu изначально с WSL):

busybox
busybox

Еще полезнее запустить командную строку Azure без установки! Просто "docker run-it microsoft / azure-cli", и он работает в контейнере Linux.

docker run-it microsoft / azure-cli
docker run-it microsoft / azure-cli

Я даже могу запустить nyancat!

docker run-it supertest2014/nyan
docker run-it supertest2014/nyan

Мечтая, я с нетерпением жду того дня, когда смогу запустить "minikube start --vm-driver="windows" и легко настроить локальную систему разработки Kubernetes, используя поддержку контейнеров Windows native Linux, а не виртуальные машины Hyper-V.

Вот так! Всего хорошего!