I am no expert on docker, but my feeling is that docker is designed for having a defined and packaged environment. One you can drop onto a system and run in isolation.
Virtualenv is more configuring a python environment within the context of the system's OS. To me it is a way to ensure I am running the correct version of libraries.