Нет такой вещи, как OSGi против Docker контейнера. Они решают проблемы в своей области. На самом деле, оба могут стать мощным способом разработки Java систем .
OSGi поможет вам создать модульное приложение. Но он работает в одном процессе JVM. Docker вступает в игру, когда у вас есть несколько java приложений с различными требованиями времени выполнения. Там docker может помочь вам в управлении процессом развертывания, который в противном случае оказывается довольно грязным. Docker особенно помогает, когда ваше решение разработано как микросервис.
Короче говоря, OSGi - это не более чем контейнер Java, обеспечивающий альтернативу выполнению кода Java в JVM. Контейнеры docker, напротив, предоставляют всю среду выполнения, помогая вам в развертывании.