Я не уверен, что понимаю вашу полную проблему. Я просто сделал следующее:
$ docker pull ubuntu:bionic
$ docker run -it --rm ubuntu:bionic
Теперь в контейнере
$ apt update
$ apt install python3-pip
$ pip install virtualenv
$ virtualenv -p python3 myenv
$ source myenv/bin/activate
(myenv) $ python
Python 3.6.9 (default, Nov 7 2019, 10:44:02)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Итак, он правильно настроил virutalenv для python. Вы можете перечислить эти команды в Dockerfile , чтобы воспроизвести то, что я сделал довольно легко.
Когда я вызываю ls -l $(which python3)
до того, как получаю исходную информацию, я получаю
lrwxrwxrwx 1 root root 9 Oct 25 2018 /usr/bin/python3 -> python3.6
Так что, возможно, ваш virtualenv был установлен с pip (для python2), и это как-то вызывает проблему. Я бы попробовал очистить virtualenv и установить его через python3. Контейнеры должны быть эфемерными и легко перестраиваться. Если есть какие-либо другие конфигурации, которые вы используете для создания своего контейнера, которые могут помочь пролить свет на вашу ситуацию, пожалуйста, поделитесь.