Невозможно скопировать в контейнер Windows («docker cp») в Windows 10

Я настроил Docker для Windows на своем ноутбуке и переключился с Linux Containers на Windows Containers в настройках Docker (что потребовало нескольких перезапусков и обновлений Windows). Я вытащил образ и запустил на его основе контейнер с помощью команд:

docker pull microsoft/dotnet-framework
docker run -it microsoft/dotnet-framework cmd

Во втором окне терминала я выполнил команду:

docker cp app container_id:/

и получил это сообщение об ошибке:

Ответ об ошибке от демона: операции файловой системы с запущенным контейнером Hyper-V не поддерживаются

Я гуглил эту ошибку, но ничего (поясняющего) не нашел, как ни странно. Есть ли способ запустить образ как контейнер Windows, а не как контейнер Hyper-V в Windows 10?

В конечном итоге я разверну этот контейнер на хосте Windows Server 2016, но мне нужно выполнять всю разработку и тестирование на своем ноутбуке под управлением Windows 10 Pro.

Докер-версия

Client:
 Version:      17.06.0-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 21:30:30 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.06.0-ce
 API version:  1.30 (minimum version 1.24)
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 22:19:00 2017
 OS/Arch:      windows/amd64
 Experimental: true

person Web User    schedule 12.08.2017    source источник
comment
Так работает ли эта штука в Windows 2016?   -  person Tarun Lalwani    schedule 13.08.2017
comment
Ошибка была описательной. Поскольку вы запускаете его в Windows 10, вы не можете запускать его в какой-либо другой изоляции, кроме Hyper-V. Если вы развернете его в Windows 2016, вы сможете запустить его в process изоляции, и у вас не будет этой проблемы.   -  person Gregory Suvalian    schedule 13.08.2017
comment
Спасибо @GregorySuvalian ... Мне удалось обойти проблему, остановив контейнер, выполнив команду docker cp и затем перезапустив контейнер. Это относительно просто неудобство, но я смог обойти эту проблему, когда снова внимательно посмотрел на ошибку.   -  person Web User    schedule 13.08.2017


Ответы (2)


Основываясь на комментарии @GregorySuvalian, я понимаю, что в Windows 10 разрешена только среда выполнения Hyper-V. Поэтому мой обходной путь — остановить контейнер, запустить команду docker cp и перезапустить контейнер. (Я предпочел это настройке тома, поскольку это всего лишь однократная операция.)

person Web User    schedule 12.08.2017
comment
Для людей, желающих смонтировать папку хоста в контейнер, мне помогло добавить это в мою команду запуска докера: --mount type=bind,source="c:/host/folder/path/with/forward/slashes",target="C:/container/folder/path/with/forward/slashes". - person Vimes; 30.01.2019

Отредактируйте ответ Vimes, так как мне было трудно использовать --mount в моей команде запуска докера. Фактическая команда запуска должна быть заключена в кавычки '', начиная с type....

--mount 'type=bind,source="c:/host/folder/path/with/forward/slashes",target="C:/container/folder/path/with/forward/slashes"'

person Go Potiya    schedule 19.04.2020