docker-image: use artifacts to persist images
The docker-image ci job relies on docker to persist images so that they can be used in different stages. This only works when all stages are executed on the same host. This prevents the use of multiple runners, as different jobs may be executed on different runners. To fix this, we can use the artifacts feature of gitlab. We use `docker image save` to create a tar archive of the image, which is then persisted by gitlab for following stages.