If your Jenkins installation is defined to use a plugins.txt file to download the plugins each time it starts, then you have created a Jenkins configuration that is mutable, especially if the version numbers are not specified in your plugins.txt file.
The "Installing Jenkins on Docker" page illustrates how to create your own Docker image that includes a specific version of a plugin (and all the dependencies of that plugin). A simplified version of that Dockerfile looks like this:
RUN jenkins-plugin-cli --plugins blueocean:1.24.4
When that Docker image is created with docker build -t myjenkins-blueocean:1.1 ., then that Docker image is immutable, with exactly the plugin versions that were downloaded at that time. Every time that Docker image is run, it will use those plugins.
If you're managing your plugin versions some other way, you may get different results.
For example, during an outage of the Jenkins mirror sites, a number of users discovered that they had made the mistake of downloading the latest Jenkins plugins every time they start their Kubernetes pod. That delays pod startup significantly and makes the pod depend on the Jenkins infrastructure during startup. Many users have since switched to create Docker images that include the Jenkins plugins so that they don't require download of plugins at pod startup.