Отображения общего ресурса SMB, созданные с помощью New-SmbGlobalMapping для докеров, не восстанавливаются после перезагрузки на Windows Server 1803 - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь создать простой хост Docker, чтобы попытаться использовать контейнеры для некоторых проектов .net.

Я настроил хост Windows Server 1803 и установил Docker EE с powershell, и он правильно работает в качестве службы.

Я хотел использовать новую функцию «SMB Global Mapping», доступную с 1709 года, чтобы отобразить общий ресурс samba в моем домене и использовать его в контейнерах, не прибегая к gMSA или другим трюкам, и я хотел, чтобы он автоматически монтировался изапускать контейнеры при перезагрузке с помощью политик перезапуска Docker, как если бы они были службами Windows.

Я запускаю эти команды, и все работает

$creds = Get-Credential 

New-SmbGlobalMapping -RemotePath \\contosofileserver\share1 -Credential $creds -LocalPath G:

docker run -v G:/:G: -it test cmd.exe

, но после перезагрузки хоста G: не отображаетсятак что я не могу в идеале поставить контейнер на автозапуск.Я предполагаю, что это из-за того, что учетные данные нигде не сохранились, но даже после этого я сомневаюсь, что команда powershell сделает все как есть постоянным, в том числе и потому, что в нем отсутствует параметр -Persistent стандартного командлета New-SmbMapping.

1 Ответ

0 голосов
/ 01 августа 2018

Я также использую этот командлет с Windows Server 1803 и Docker.Чтобы решить эту проблему, я делаю следующее:

Создайте этот сценарий PS1 в C: \ data \ smbshare.ps1

$secpasswd = ConvertTo-SecureString 'password' -AsPlainText -Force;
$creds = New-Object System.Management.Automation.PSCredential ("domain\user", $secpasswd);
New-SmbGlobalMapping -RemotePath 'RemotePath' -Credential $creds -LocalPath X:;

Теперь создайте запланированное задание, которое запускается при запуске сервера.Я делаю это с помощью этого командлета:

$Action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-file C:\data\smbshare.ps1" -WorkingDirectory "C:\data";
$Trigger = New-ScheduledTaskTrigger -AtStartup;
$Settings = New-ScheduledTaskSettingsSet -DontStopOnIdleEnd -RestartInterval (New-TimeSpan -Minutes 1) -RestartCount 10 -StartWhenAvailable;
$Settings.ExecutionTimeLimit = "PT0S";
$SecurePassword = ConvertTo-SecureString 'password' -AsPlainText -Force;
$UserName = "domain\user";
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $UserName, $SecurePassword;
$Password = $Credentials.GetNetworkCredential().Password;
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings;
$Task | Register-ScheduledTask -TaskName 'SMBGlobalShare' -User "domain\user" -Password $Password;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...