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?

Since it’s a shared runner, you might run to issues with conflict container names with other project CI job. Also, there will be security issue like you gain access to other project running ci container by docker ps and docker exec -it.