Каким образом делается взаимодействие с hardware в микросервисной архитектуре и Docker-контейнерах?
=====================================================================================================

 В сложных системах очень часто возникают ситуации, когда необходимо интегрироваться с каким-то внешнием железом, как-то: банковские терминалы, сканеры, принтеры, телефония, POS и т.п.  

Каким образом такое взаимодействие обеспечеивается в микросервисной архитектуре на базе .NET при хостинге в Docker-контейнерах?  
  

К примеру, при комплектации заказа нужно печатать документы. .NET Core не поддерживает System.Printing и System.Drawing.Printing. Можно использовать .NET Framework, но Windows-контейнеры Docker не поддерживают spooler service!  
  

Другой пример: для общения с банковским терминалом нужна возможность взаимодействия с COM / USB портами, но Windows-контейнеры опять же этого не имеют.  
  

Как обычно поступают в таких случаях? Хостят всё, кроме hardware-specific кода в контейнерах, а сервисы, взаимодействующие с железом, деплоят на сам хост? 

 COM, USB, принтеры и какие-то специфичные железяки для терминалов - та часть, где код должен быть по определению железо-зависимым. Контейнеры же про диаметрально противоположное, про абстракцию от железа и окружения. Т.е. писать софт для специфичной железяки и запускать его в контейнере, это как в истории про микроскоп и гвозди.   

Вы сделали правильный вывод. Нужно выносить в контейнеры только логику независящую от какого-либо железа или оборудования. А сервисы, взаимодействующие с железом, разворачивать там где и железо. 

 Можно извернуться и сделать форвардинг COM\USB портов по TCP. Но это все будет работать нестабильно и через жопу.   

Все что относится к клиенту, должно работать на клиенте. Печать - ответственность только клиента, бэк в контейнере вообще ничего не должен об этом знать, только генерировать документы если надо.   

Работа внешним оборудованием тоже отвественность клиента. Если оборудование надо зашарить, то на клиенте подымается сервис.