The author of Docker-in-Docker advises against using dind for CI and suggests bind mounting the Docker socket.
Let’s take a step back here. Do you really want Docker-in-Docker? Or do you just want to be able to run Docker (specifically: build, run, sometimes push containers and images) from your CI system, while this CI system itself is in a container?
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
That seems reasonable. However, the GitLab shared runners are not configured like this, but for running dind.
https://about.gitlab.com/gitlab-com/settings/#shared-runners
Is there any effort underway to head down this path or is there a significant reason why the shared runners can’t make use of this solution?