Worth a read probably: https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/ from a Docker team member.
For your case, might be even simpler to also bind mount the docker client binary in your container. That way you can keep your Dockerfile independent of that.
Also, beware that using bind mounts for data is generally not recommended. Better use a named volume (since data volume containers are somehow now deprecated).
Cheers
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CANWgJS7XYJ4%3DgaVkt3FFV1LLMqckKtXRg0NX1XuHL%3D8Uc1hMrA%40mail.gmail.com.