This refactors docker executor in:
- how we interact with Docker Executor,
- we create predefined/build containers as needed, instead of pre-creating them,
- optimises the welcome message,
- optimises images SHAs,
- adds verbose logging (stack trace) when https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/2347 happens to make it easier to debug.
What does this MR do?
Why was this MR needed?
Are there points in the code the reviewer needs to double check?
Does this MR meet the acceptance criteria?
Added for this feature/bug
All builds are passing
Branch has no merge conflicts with
master(if you do - rebase it please)