#.net #vb.net #visual-studio #docker #containers
Вопрос:
Я действительно новичок в контейнере Docker и технологиях .net. Я постараюсь объяснить свой вопрос как можно лучше.
Сценарий: Я хочу запускать приложения, разработанные в vb.net использование контейнера docker. Я начинаю медленно, когда тестирую различные варианты использования. Сначала я написал очень простое приложение «Привет, мир», используя visual studio 2015, как показано ниже. Тип приложения — «Консольное приложение», а целевая платформа-.Net Framework 4.6.2.
Module Module1
Sub Main()
Console.WriteLine("hello world")
End Sub
End Module
Я написал файл dockerfile, и он выглядит следующим образом.
FROM mcr.microsoft.com/dotnet/framework/runtime:4.6.2
WORKDIR /app
COPY bin/Release .
ENTRYPOINT ["testVB.exe"]
Затем я вошел в каталог с помощью powershell и выполнил следующее.
docker build -t testvb . ---> build successful
docker run testvb
результаты ниже были такими, как и ожидалось:
Hello World
До сих пор все было хорошо.
Теперь я хотел проверить свой следующий случай использования:
Сценарий: Скопируйте текстовый файл (test.txt) из одной папки в другую.
Вот как это выглядит в VB.net ,, Visual studio 2015,, тип—>Консольное приложение , целевая платформа —>> .net framework 4.6.2
Module Module1
Sub Main()
My.Computer.FileSystem.CopyFile(
"D:UsersDockerProjectsvbconsolevbconsoleTestFoldertest.txt",
"D:UsersDockerProjectsvbconsolevbconsoleTestFolderSubDirtest.txt", overwrite:=True)
End Sub
End Module
Когда я запускаю его с помощью visual studio, операция копирования работает нормально.
Затем я написал файл dockerfile, чтобы протестировать его с помощью docker run.
Файл Docker выглядит так, как показано ниже.
From mcr.microsoft.com/dotnet/framework/runtime:4.6.2
WORKDIR /app
COPY bin/Release .
ENTRYPOINT ["vbconsole.exe"]
Затем с помощью powershell я выполнил следующие команды в каталог проекта.
docker built -t vbconsole . ---> build successfull
docker run vbconsole
результат оказался не таким, как ожидалось:
Unhandled Exception: System.IO.FileNotFoundException: Could not find file 'D:UsersDockerProjectsvbconsolevbconsoleTestFoldertest.txt'.
at Microsoft.VisualBasic.FileIO.FileSystem.CopyOrMoveFile(CopyOrMove operation, String sourceFileName, String destinationFileName, Boolean overwrite, UIOptionInternal showUI, UICancelOption onUserCancel)
at vbconsole.Module1.Main() in D:UsersDockerProjectsvbconsolevbconsoleModule1.vb:line 4
Затем я понял, что мои локальные диски не монтируются во время процесса сборки, поэтому я выполнил следующую команду.
docker run -it -v ${pwd}:c:app vbconsole
вывод по-прежнему был ошибкой:
docker: Error response from daemon: container f3c74e349f0d545deb42a6def3973eda9baed508274f156b44b04ae72f54f8df encountered an error during hcsshim::System::Start: failure in a Windows system call: The virtual machine or container exited unexpectedly. (0xc0370106)
.
Именно здесь я в настоящее время застрял и нуждаюсь в некоторой помощи или руководстве, чтобы решить эту проблему. Я с нетерпением жду положительного ответа.
Заранее спасибо.
Комментарии:
1. ваша хост-машина Windows или linux? и вам лучше использовать относительный путь, когда это возможно. почему вы предполагаете, что в докере есть диск D?
2. @LeiYang моя хост-машина-windows, и на ней работают контейнеры Windows. Я не предполагаю, что в докере есть диск D. Привод D, о котором я упоминал выше, находится на моей локальной машине .
3. если у вас нет особых требований, я настоятельно рекомендую вам попробовать использовать
.net core
вместо.net 4.x
.4. @LeiYang У меня есть особые требования, потому что фактическое приложение, которое я хочу перенести позже после этих тестов, разработано в .net 4.6.2. Можете ли вы предложить мне что-нибудь для конкретной ошибки, о которой я упоминал выше?
5. я уже предлагал: относительный путь, .net core