Services such as source control and the image registry are good candidates to be shared between many projects. They have similar requirements for high availability and reliable storage, so they can be deployed across a cluster that has enough capacity for many projects. The CI server can be run as a shared service or as a separate instance for each team or project.
I covered running a private registry in a Docker container in Chapter 4, Sharing Images with Docker Registries. Here, we'll look at running a Git server and a CI server in Docker.