Ответ 1
Docker - это удобный для пользователя уровень поверх LXC, набор функций ядра Linux, позволяющий пространство имен конфигурации файловой системы, сетевых ресурсов, таблиц процессов и других ресурсов, связанных с ядром, которые были исторически глобальными. (Это намного ближе к тюрьмам FreeBSD, чем к kvm или VMware).
Эти функции очень специфичны для Linux, а приложение, работающее в контейнере Docker, по-прежнему напрямую взаимодействует с ядром хоста Linux (хотя оно имеет доступ только к подмножеству ресурсов, подверженных пространствам имен, в которых он участвует). Аналогично, коды операций запускаются непосредственно на оборудовании без эмуляции виртуализации на месте, поэтому аппаратные различия не отбрасываются либо
Таким образом, Docker представляет собой не уровень переносимости кросс-OS (или кросс-архитектуры), и он не сможет скрыть детали реализации из приложений, зависящих от конкретных версий ядра, а тем более совершенно разных операционных систем в целом.
Обновление до 2017 года
Docker теперь работает на Mac, объединяя легкий стек виртуализации, очень похожий на kvm на Linux. При выполнении этого способа он фактически выполняет как виртуализацию, так и контейнеризацию - первый для запуска (одного) ядра Linux, последний для запуска серии отдельных контейнеров в этом ядре.
Это все равно означает, что он ограничивается запуском собственных приложений для Linux, и он по-прежнему не обеспечивает уровень отображения для настольных приложений (X11, VNC или что-то еще по этим строкам необходимо использовать дополнительно). Однако, объединив инструмент виртуализации, современный Docker теперь является чем-то вроде портативного решения (на разных платформах, а не на архитектуре).