Resources usage and persistence

I’m pretty new to GitLab CI. Let’s say I have a standard pipeline with 3 stages:

  • build
  • test
  • deploy

Each stage has 1 or multiple jobs. By default, they use the same tagged GitLab runner and the same docker image.

Are jobs in the same stages executed concurrently on the same runner?

In my test stage, I run a job which starts a DB, another docker image and other resources. Do I need to free/kill them at the end of the job? I imagine that, since they are in a docker image, once the docker container is being shut down I have no resources’ waste from that job.

In a nutshell, I’m wondering if I need to clean resources up at the end of my jobs.