Удаление базы данных в linux SQL Контейнер завершается с ошибкой операционной системы 31 (устройство, подключенное к системе, не работает) - PullRequest
0 голосов
/ 23 февраля 2020

Я запускаю контейнер SQL Server 2017 linux (последний) на хосте Windows. Файлы базы данных находятся в папке, которая привязана к папке windows.

Когда я удаляю базу данных, база данных удаляется, но не может удалить файлы из-за ошибки операционной системы 31.

Если я помещаю файлы базы данных в другую папку, в частности, в папку, которая не была подключена, привязка удаляется без проблем.

Служба работает как root, и если я удаляю файлы через bash (как root без sudo), файлы удаляются без проблем, поэтому проблема с разрешениями не возникает.

Вот как я создаю контейнер.

Progress<JSONMessage> progress = new Progress<JSONMessage>();
        _dockerClient.Images.CreateImageAsync(new ImagesCreateParameters() { FromImage = "mcr.microsoft.com/mssql/server", Tag = "2017-latest" }, null, progress).Wait();
        string containerId = _dockerClient.Containers.CreateContainerAsync(
            new CreateContainerParameters(new Config
            {
                Env = new string[]
                {
                    "ACCEPT_EULA=Y",
                    $"SA_PASSWORD={SAPassword}",
                },
            })
            {
                Image = "mcr.microsoft.com/mssql/server:2017-latest",
                ExposedPorts = new Dictionary<string, EmptyStruct>
                {
                    { "1433", default },
                },
                HostConfig = new HostConfig
                {
                    PortBindings = new Dictionary<string, IList<PortBinding>>
                    {
                        { "1433", new List<PortBinding> { new PortBinding { HostPort = HostPort } } },
                    },
                    PublishAllPorts = true,
                    Mounts = new List<Mount>
                    {
                        new Mount() { Source = Directory.GetCurrentDirectory(), Target = MountedDirectory, Type = "bind" },
                    },
                },
                Name = ContainerName,
            }).Result.ID;

        _dockerClient.Containers.StartContainerAsync(containerId, null).Wait();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...