Если вы посмотрите на вывод Контейнерных инструментов в Visual Studio, вы увидите строку вроде:
docker build -f "C:\Users\foo\source\MySolution\TestDocker\Dockerfile" -t testdocker:dev --target base --label "com.microsoft.created-by=visual-studio" "C:\Users\foo\source\MySolution"
При создании образа для контейнера Linux в Windows Docker переносит содержимое активного каталога в виртуальную машину MobyLinux, и все команды копирования и тому подобное запускаются по этому пути в виртуальной машине MobyLinux, а не в локальной файловой системе. Поскольку проектам очень часто требуется доступ к другим проектам в том же решении для сборки, файлы Docker, созданные Visual Studio, относятся к вашему каталогу решений, так что весь каталог решений поднимается в MobyLinux.
Очень вероятно, что вы сделали, перейдя непосредственно в каталог вашего проекта и запустив оттуда файл Docker, не передавая каталог для использования в качестве «корня». Таким образом, Docker просто поднимает текущий, т. Е. Ваш проект, каталог и результирующие пути в виртуальной машине MobyLinux больше не соответствуют тому, что находится в Dockerfile.
Длинно и коротко, если вы хотите сделать сборку образа вручную, вам нужно убедиться, что активный каталог, который вы подняли, является вашим каталогом решений, а не каталогом проекта. Вы можете достичь этого, просто передав эту последнюю строку команды выше своей собственной команде, которая сделает ее относительно вашего решения.