Теоретически, Docker при этом может помочь:
- Исходный код проекта закрыт и нигде не публикуется, то же касается Dockerfile. Вы распространяете только уже готовые Docker-образы.
- При сборке Docker-образа шифруем файлы самой программы, будь то .jar'ник, бинарник или голые php'шные сорцы.
- Для расшифровки требуется лицензионный ключ, который должен пробрасываться в контейнер при старте через переменные окружения. Ним файлы программы расшифровуются и программа стартует.
На практике же, получится то же самое что и с пиратством различного софта сегодня:
- Тот, кто обладает ключем, может выложить его в открытый доступ. Этот момент можно обойти, если придумать какую-либо централизованую верификацию ключа на своих серверах (см. как делают JetBrains). Или под каждый ключ генерить отдельный уникальный Docker-образ. Опять же, тот кто обладает ключем, обладает и соответствующим образом, и ним он тоже может поделиться.
- Тот, кто обладает ключем, может спокойно расковырять контейнер через docker exec. И если файлы программы сами по себе отражают хорошо исходный код (например PHP-скрипты, или бинарники Go), то тут утекает уже и исходный код Вашего продукта, что не комильфо. Так что обфускацией кода и другими техниками защиты результатов компиляции пренебрегать не стоит.
В общем, палок в колеса вставлять можно "ого-го-го", но полного решения данной проблемы, ИМХО, нету. Потому пиратство и процветает, ибо оно возможно.