[This post explains that/why environment variables don't propagate to Docker agent][1].

If you need a custom container, you could define path and whatever else as layers on top of base image in a Dockerfile. Then using that image in pipeline would be what I think is usual way of doing it. You can build that image outside of Jenkins, but it's also possible to [build container from within pipeline too][2] if you want (get Dockerfile from SCM or some other use case).

In the context of your question, I think you can still use base image, and if you know full path you'd like to set, do that at container (agent) startup with args. But `$PATH` variable won't be available at host to be resolved within container at startup. If you must dynamically set path in container, could adjust it in shells.

    pipeline {
    agent {
        docker { 
            image 'python:3.9'
            // cannot resolve $PATH var in container (becasue HOST does not know what it is).
            args '-e PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/i/know/my/full/path/ahead/of/time'
        }
    }
    stages {
        stage('Test') {
            steps {
                
                // as set by args above. Applies to all shells
                sh 'echo $PATH'
                
                // You can also adjust it within container in each shell
                sh '''
                    export PATH=/even/more/path:$PATH
                    echo $PATH
                   '''

                // But this is back to what's in args in a new shell instance
                sh 'echo $PATH'
            }
        }
    }
}


  [1]: https://support.cloudbees.com/hc/en-us/articles/226520788-Control-environment-variables-inside-a-Docker-container
  [2]: https://www.jenkins.io/doc/book/pipeline/docker/#building-containers