Have you tried CircleCI? I've found it really straightforward to use in a lot of the same ways you mention, except for perhaps the docker support -- it uses docker images and you can of course have a docker image that supports docker, but it doesnt upload to dockerhub out of the box.
I'm curious to know how the two compare because I haven't tried Gitlab before.
I'm curious to know how the two compare because I haven't tried Gitlab before.