Docker для windows - общие файловые ресурсы

Я хочу смонтировать общую папку в контейнере Windows. Я попытался смонтировать общий ресурс хранилища файлов Azure, и вначале он работает нормально. Я могу просматривать файлы в каталоге.

Однако, когда я отключаю и снова подключаю свой контейнер PowerShell-session, общий ресурс помечается как «Недоступно». Кроме того, общий ресурс недоступен для исполняемого файла, работающего как мой ENTRYPOINT.

    docker exec -it a4 powershell
    **************
    PS C:\> net use z: \\XXXX.file.core.windows.net\dockerstore /u:XXXXX XXXXXX== /P:Yes
    The command completed successfully.

    PS C:\> net use
    New connections will be remembered.


    Status       Local     Remote                    Network

    -------------------------------------------------------------------------------
    OK           Z:        \\XXXX.file.core.windows.net\dockerstore
                                                    Microsoft Windows Network
    The command completed successfully.


    exit

    ******************
    docker exec -it a4 powershell
    **********************
    PS C:\> net use
    New connections will be remembered.


    Status       Local     Remote                    Network

    -------------------------------------------------------------------------------
    Unavailable  Z:        \\XXXX.file.core.windows.net\dockerstore
                                                    Microsoft Windows Network
    The command completed successfully.

Я также попытался установить сетевой диск на хост и установить его в контейнер. Но docker-compose не может его вызвать (проблема с доступом?):

Cannot create container for service configserver-c: invalid bind mount spec "z:\\Certificates:c:\\Certificates:rw": invalid volume specification: 'z:\Certificates:c:\Certificates:rw': invalid mount config for type "bind": bind source path does not exist

Есть ли другие варианты постоянного монтирования внешнего файлового ресурса? (Я не знаю каких-либо драйверов Docker Volume, доступных для Windows.)

Дополнительная информация: я использую Docker для Windows в Windows 10 с изоляцией Hyper-V.

Версия докера:

    Client:
     Version:      17.03.1-ce
     API version:  1.27
     Go version:   go1.7.5
     Git commit:   c6d412e
     Built:        Tue Mar 28 00:40:02 2017
     OS/Arch:      windows/amd64

    Server:
     Version:      17.03.1-ce
     API version:  1.27 (minimum version 1.24)
     Go version:   go1.7.5
     Git commit:   c6d412e
     Built:        Tue Mar 28 00:40:02 2017
     OS/Arch:      windows/amd64
     Experimental: true

person Andreas Ludviksen    schedule 08.06.2017    source источник
comment
Общие ресурсы существуют только в пользовательском сеансе, который вы создали, другие пользователи или другой сеанс не увидят его. Точно так же это работает на вашем рабочем столе. Попробуйте использовать объект $ session вместо PS C:\> $session = New-PSSession -ContainerId (get-Container ed).ID -RunAsAdministrator PS C:\> Invoke-Command -Session $session -Command {$env:mytest = "test"} PS C:\> Invoke-Command -Session $session -Command {Write-Output $env:mytest} test   -  person Gregory Suvalian    schedule 08.06.2017
comment
@GSA Спасибо за ваш вклад. Думаю, я попытаюсь использовать CMDKEY для добавления учетных данных пользователю и вместо этого использовать пути UNC. Выложу результат.   -  person Andreas Ludviksen    schedule 09.06.2017
comment
Чем вы занимаетесь с контейнерами и необходим ли пользователю вход в контейнер на консоли?   -  person Gregory Suvalian    schedule 09.06.2017
comment
У меня есть несколько сервисов в виде контейнеров. И Windows-сервисы, и веб-сервисы. Некоторым из них требуется доступ к файлам в хранилище файлов Azure. В вопросе выше я попытался выразить это просто. Мне не нужно делать это с помощью консольного сеанса, это можно сделать в скрипте или в Dockerfile. Главное, чтобы у пользователя, под которым работает служба, был доступ к внешнему хранилищу.   -  person Andreas Ludviksen    schedule 09.06.2017
comment
@AndreasLudviksen Попытка сделать то же самое, у вас это сработало?   -  person eselk    schedule 15.06.2017
comment
@eselk Да. Мне удалось сделать том постоянно доступным, используя cmdkey в Dockerfile и UNC-пути в приложении. Кроме того, если я запускаю приложение от имени пользователя с тем же именем пользователя и паролем, что и хранилище файлов Azure, приложение может получить доступ к хранилищу. Дополнительную информацию см. В этом сообщении: stackoverflow.com/questions/44488399/   -  person Andreas Ludviksen    schedule 17.06.2017


Ответы (1)


Другое решение - смонтировать том при создании изображений в файле докеров.

person Ehsan    schedule 18.07.2017