У меня самое простое консольное приложение, которое записывает сообщения в какое-либо место в контейнере.Я просто хочу, чтобы сообщения записывались на том персистентности, расположенный на моем хосте докера.
Контейнер - контейнер Windows
ОС - Windows 10
Код:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("starting");
string path = @"c:\exe\MyTest.txt";
int i = 0;
while (true)
{
string createText = $" {i} + Hello and Welcome"+ Environment.NewLine;
File.AppendAllText(path, createText);
i++;
}
}
}
Dockerfile:
# getting base image
FROM microsoft/windowsservercore:latest
ADD ./bin/debug /exe/
VOLUME c:/data # this line creates issue
ENTRYPOINT ["/exe/BackendService.bat"]
BackendService.bat
start c:\exe\ConsoleApp16.exe
Выполнение команды:
docker build -t fridayimg1:1.0 .
docker run {ImageID}
Все работает нормально, если я не даю Volume
информацию в DockerFile.
PS: Итак, проблема в том, что как только я начинаю упоминать Volume
, контейнер запускается изатем выходит.Когда я делаю docker {containerID} inspect
, я вижу, что контейнер c:/data
был смонтирован в физическом месте в моей папке Volumes.
Вопрос: почему мой контейнер запускается, а затем сразу же выходит.Но как только я удаляю тег тома, он продолжает нормально работать и зацикливается и записывает сообщения в файл MyTest.txt
внутри контейнера.