We should be able to eventually abstract out the Docker specific calls, it's mostly start/stop and mounting. But for features like environments, we also have some Docker 'image building' specific code (in orchest-api), in addition to various image/container cleanup and networking.
Furthermore, the Jupyter Enterprise Gateway would also need to support the Kubernetes backend - which it has support for - but our integration with it should be made compatible (and the various language specific container images - such as the Julia kernel image).