Jenkins - Docker cloud agent VS Docker in Pipeline

I’m trying to understand why so many people have taken the route of setting up “Docker cloud agent” inside Manage Jenkins → Clouds, instead of just going with “Docker agent” inside pipeline, which is officially supported.

In my view, if I go with “Docker cloud agent” way,

  1. I have to login to the server where Jenkins is hosted.
  2. I need to edit Docker’s service file “/lib/systemd/system/docker.service” and expose REST API port manually.
  3. Do the setup in Manage Jenkins Cloud.
  4. Create a Docker image of your own.
  5. Add that Docker image under “Docker agent template”
  6. Then finally refer that template’s name in the pipeline.

Instead of all these extra steps, if I go with “Docker agent” support inside pipeline directly official documentation,

  1. I don’t even need to login to server where Jenkins is hosted.
  2. I can also do more customization using “Dockerfile” and committing it to the source code.

What is the exact reason for choosing OR when should I choose “Docker cloud agent”?

Thank you.

One more observation I’ve made is, On step 4, while creating your own Docker image, you should always use “jenkins/agent:[XYZ]” as base image mandatorily.

Assume if you want JDK 8 for your project. But since both JDK version of Jenkins and JDK version of agents have to be same, you will be forced to use “jenkins/agent:jdk17” as base image and manually install JDK 8 along with JDK 17 and refer that JDK 8 during the build stage.