Я запускаю контейнер 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();