короче есть образ операционной системы линукс (например alphine), от него чел наследуется, и создает свой образ. Устанавливает туда все нужные зависимости, копирует исходный код своего приложения. И прописывает команду запуска.
Затем образ собирается, и запускается на нужной машине.
Плюсы:
1. Челу для запуска не нужно знать ничего о зависимостях, только о портах ну и в зависимости от приложения
2. Запуск в один клик
3. Изнутри контейнера попасть в корневую ос (по умолчанию) невозможно, что делает систему безопасной
и др.