Docker - это не виртуализация . Речь идет о контейнеризации (как запустить процесс в изолированной среде).
Это означает, что вы не можете запустить контейнер Linux на Windows или контейнер Windows на Linux без использования какой-либо виртуализации (Virtualbox, Hyper-v ...) Это нормально делать на ноутбуке во время разработки, но в производстве вы бы выбрали архитектуру, подходящую для ваших контейнеров.
Что такое контейнер?
из Руководство системного администратора по контейнерам :
Традиционные контейнеры Linux - это всего лишь обычных процессов в системе Linux. Эти группы процессов изолированы от других групп процессов, использующих ограничения ресурсов:
- (контрольные группы [ cgroups ]),
- Ограничения безопасности Linux (разрешения Unix, возможности, SELinux, AppArmor, seccomp и т. Д.) И
- пространства имен (PID, сеть, монтирование и т. Д.).
Задать все это вручную (пространства имен сети, правила iptable-ов и т. Д.) С помощью команд linux было бы непросто, поэтому задача docker-daemon - выполнять их при вводе команд docker ...
, и все это происходит под капотом. .
О скорости ...
Прежде всего, контейнеры могут быть менее быстрыми, чем запуск процесса непосредственно в сетевом стеке хоста, из-за сложности, которая вводится. См., Например, это: Проблемы с производительностью при запуске nginx в контейнере Docker
Но они предложат вам скорость . Как:
- контейнеры не являются полными ОС ( базовые образы имеют небольшой размер )
- следуют концепциям микроуслуг и «делай одно, делай это хорошо». Это означает, что вы не помещаете все в контейнер так, как вы делаете с виртуальными машинами (это называется разделение задач , и это приводит к более легким компонентам приложения. Это также дает разработчикам скорость, потому что разные команды могут работать над своим компонентом отдельно).
- слои изображения : в Docker есть внутренний способ разделения изображения на слои, и при создании нового изображения слои можно повторно использовать . Это дает вам хорошую скорость развертывания (подумайте, насколько это полезно в случае отката)
О контейнерах Windows
Контейнеры были «linux», но эта волна контейнеризации также повлияла на Windows. В начале docker-toolbox
использовал Virtualbox для запуска контейнеров на виртуальной машине Linux. Позже, docker-for-windows
был представлен и дает возможность запускать контейнеры непосредственно на хосте или на hyper-v
. Если вы посетите Типы контейнеров Windows , вы можете найти больше.