我在笔记本电脑上设置了Docker for Windows,并在Docker的设置中从 Linux Containers 切换到 Windows Containers (这促使了几次重启和Windows更新)。我使用以下命令拉出图像并运行基于它的容器:
docker pull microsoft/dotnet-framework
docker run -it microsoft/dotnet-framework cmd
在第二个终端窗口中,我执行了命令:
docker cp app container_id:/
并收到此错误消息:
来自守护程序的错误响应:不支持针对正在运行的Hyper-V容器的文件系统操作
我搜索了这个错误,但没有任何(解释性的)出现,非常令人惊讶。有没有办法在Windows 10上将图像作为Windows容器而不是Hyper-V容器运行?
最终,我会将此容器部署到Windows Server 2016主机,但我需要在运行Windows 10 Pro的笔记本电脑上进行所有开发和测试。
Docker版本
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
答案 0 :(得分:15)
根据@GregorySuvalian的评论,我了解Windows 10仅允许Hyper-V运行时。所以我的解决方法是停止容器,运行docker cp
命令并重新启动容器。 (我更倾向于设置音量,因为它只是一次操作。)
答案 1 :(得分:4)
编辑为Vimes答案,因为我很难在docker run命令中使用ChildSpec
。实际的运行命令必须在 public class DateLabelFormatter extends AbstractFormatter {
private String datePattern = "dd-MM-yyyy";
public SimpleDateFormat dateFormatter = new SimpleDateFormat(datePattern);
@Override
public Object stringToValue(String text) throws ParseException {
return dateFormatter.parseObject(text);
}
@Override
public String valueToString(Object value) throws ParseException {
if (value != null) {
Calendar cal = (Calendar) value;
return dateFormatter.format(cal.getTime());
}
return "";
}
}
model1 = new UtilDateModel();
p1 = new Properties();
p1.put("text.today", "Today");
p1.put("text.month", "Month");
p1.put("text.year", "Year");
datePanel1 = new JDatePanelImpl(model1, p1);
datePicker1 = new JDatePickerImpl(datePanel1, new DateLabelFormatter());
开头的引号path="/entertainment/Pictures"
files=(
"$path"/*.jpg"
"$path"/*.bmp"
)
for i in "${files[@]}"
do
# replace jpg and bmp with png in prep for conversion
new=$(echo "$i" | perl -pe "s/\.jpg|\.bmp/.png")
# next is to perform the conversion
...
done
内
--mount