The best way to deploy a Docker application from a CI would be that you could save the docker images to a private repo that the CI Server and application servers have full access on. You will need the docker repo to have access to whatever external applications/libraries they need. One thing to be wary of is that images can get stale or out of date. What about security updates to libraries. I would recommend some CI process that recreates the image and check for any issues there might be with and middleware or libraries used in the app and a good set of regression tests to protect your baseline apps when they get updated. If you want to learn Docker then you must have a look at the following Docker training course. I am also mentioning a video tutorial which you can refer to learn more about it.