Контейнер запускается и сразу останавливается при подключении к объему - PullRequest
0 голосов
/ 01 апреля 2019

У меня самое простое консольное приложение, которое записывает сообщения в какое-либо место в контейнере.Я просто хочу, чтобы сообщения записывались на том персистентности, расположенный на моем хосте докера.

Контейнер - контейнер 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 внутри контейнера.

1 Ответ

0 голосов
/ 01 апреля 2019

Вам необходимо отобразить том при запуске контейнера, а не при его создании (в Dockerfile).

docker run -v ./data:/data <your image>

Это сопоставит папку «data» в вашей текущей папке с путем «/ data» в вашем контейнере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...