Docker (портовый грузчик, если что) это платформа для разработки, развертывания и запуска приложений внутри изолированных сред, которые называются контейнерами. «Портовый грузчик грузит контейнеры».
В контейнеры можно упаковать приложение со всеми его зависимостями, включая структуру каталогов, метаданные, пространство процессов, номера сетевых портов и т. д., и запускать это всё при необходимости. Приложение, упакованное в контейнер, запускается одинаково на других компьютерах. Работает в Linux, поэтому консоль наше всё.
Почти то же самое, что и управление виртуальными машинами (контейнеры же), внутри которых запускается ПО. Но докер не виртуалка. Это средство виртуализации отдельных процессов, а не систем.
Виртуальная машина создает целиком новый экземпляр операционной системы.
Контейнер докера охватывает только уровень приложения и полагается на существующее базовое ядро операционной системы,
Окружение Docker заимствует напрямую из существующего ядра системы, то есть, создаёт условно изолированную среду поверх основной. За счёт этого контейнеры в Docker не всегда такие огромные, как в VMware или VirtualBox, и уже поэтому работают шустрее.
Использование Docker обещает упростить настройку и развёртывание сервисов в будущем, и это правда, но частичная. Всё будет просто, если всё будет правильно настроено, а до того с настройками (конфигами) ВСЁ БУДЕТ СЛОЖНО. Какие-то основы хорошо объяснены на https://xakep.ru/2015/06/04/docker-faq/ и https://ivan-shamaev.ru/docker-compose-tutorial-container-image-install/
Важное правило — каждый процесс надо запускать в отдельном контейнере. Или, если угодно, контейнер равно отдельный процесс и наоборот. Не надо запускать apache+php+mysql в одном контейнере, их надо положить в три разных контейнера.
Вечно гореть в windows-аду всем тем, кто не прочитает https://wiki.omv-extras.org/doku.php?id=omv7:docker_in_omv