ВМ - полная эмуляция железа, своя ОС, гипервизор. Контейнер - изоляция процессов на общем ядре ОС (namespaces, cgroups). Контейнер легче и быстрее стартует, меньше накладных расходов. В Go бинарник компилируется в статический или с минимальными зависимостями и упаковывается в образ; один процесс в контейнере - типичный сценарий.