Если Вы пользуетесь виртуализацией, то знаете, что накладные расходы достаточно велики. Гостевая ОС кушает память, проц и диски нисколько не меньше, чем "обычная". Поскольку это обычная полноценная ОС, то и грузится она по времени, как любая обычная ОС. Короче долго. В итоге получается, что чем больше приложений мы рассаживаем по отдельным виртуалкам, тем больше накладных расходов получаем. Некоторым людям это настолько не нравилось, что они стали искать способы кардинально сэкономить память, проц и хранилище. Другим дико не нравилось, что приходится долго ждать запуска гостевой ОС, чтобы запустилось нужное приложение. Подозреваю, что эти множества сильно пересекались). В итоге было придумано, в общих чертах, следующее:
- не эмулировать все железо полностью, а только самое нужное, типа сети и фс; при работе с фс разрешить прозрачно мапить каталоги хостовой ОС: память и проц резервировать и выделять по упрощенной программе, без полной изоляции, свойственной виртуалкам
- использовать для работы гостевых ОС уже загруженное ядро хостовой ОС - экономим кучу времени на инициализации всего оборудования и загрузке (да, забыл сказать: недовольные до последнего времени были сплошь красноглазики разной степени тяжести)
- ну и все в таком духе
В итоге появилось то, что нонче называется контейнерной виртуализацией, представителями которой являются lxc, lxd, docker, rancher другие. Как это принято в open-source, все эти продукты в той или иной степени используют друг друга (идеи и принципы, кодовая база...), дополняют, являются форком или надстройкой/оберткой над родственным продуктом. Так, изначально докер являлся в какой-то степени надстройкой над lxc (да простят меня коллеги за вопиющие кощунства и неточности - все во имя упрощения и понятности).
Итак, Docker - это виртуализация, но не полноценная, а "упрощенная", хотя наверное точнее будет сказать "облегченная и ускоренная", ибо простотой там, кроме как на совсем банальных хелловорлдах, не пахнет, особенно при отладке (отладка и докер порой создают особо изощренные анально-интеллектуальные приключения). Важный момент - это все таки виртуализация ОС со своим шеллом и окружением, но виртуализация эта заточена на выполнение одного-двух приложений с минимальными накладными расходами и сверхбыстрым (по сравнению с классической виртуалкой) запуском. Использование одного ядра для всех "контейнерных виртуалок" объясняет, почему на linux не получиться выполнять контейнеры с windows, unix и mac, и наоборот. Хотя с появлением WSL в windows есть шансы на практически нативные контейнеры с linux, работающие под windows...
Теперь по быстрому старту:
https://docs.docker.com/docker-for-windows/#explor...