ошибка недопустимый тип монтирования Windows: «привязка» в сборке Windows 10 docker контейнера Windows

#windows #docker #dockerfile #windows-server-container

#Windows #docker #dockerfile #windows-server-container

Вопрос:

Я только что установил последнюю версию Windows 10 Pro 20H2. После установки Docker Desktop и переключения его на контейнеры Windows он попросил меня выполнить следующее

 Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Hyper-V", "Containers") -All
 

После того, как это было сделано, мой компьютер перезапустился, и все выглядит хорошо. Затем я сохранил Dockerfile приведенное ниже в пустом каталоге в разделе «Мои документы». Я успешно собирал этот файл Dockerfile в системе CI раньше, но я хочу встроить его на свой компьютер для более быстрого цикла разработки.

 FROM mcr.microsoft.com/windows/servercore:ltsc2019

RUN powershell -NoLogo -NoProfile -Command 
    netsh interface ipv4 show interfaces ; 
    netsh interface ipv4 set subinterface 18 mtu=1460 store=persistent ; 
    netsh interface ipv4 show interfaces ; 
    Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) ; 
    choco install -y --no-progress git --params "/GitAndUnixToolsOnPath" ; 
    choco install -y --no-progress 7zip ; 
    Remove-Item C:ProgramDatachocolateylogs -Force -Recurse ;
 

Я хочу создать этот Dockerfile, поэтому в каталоге, который его содержит, в Powershell я набрал:

 docker build .
 

Но я получил ошибку:

 [ ] Building 0.0s (2/2) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                                                                                                                                                                    0.0s
 => => transferring dockerfile: 646B                                                                                                                                                                                                                                                                                    0.0s
 => [internal] load .dockerignore                                                                                                                                                                                                                                                                                       0.0s
 => => transferring context: 2B                                                                                                                                                                                                                                                                                         0.0s
failed to solve with frontend dockerfile.v0: failed to read dockerfile: failed to mount C:ProgramDataDockertmpbuildkit-mount316756066: [{Type:bind Source:C:ProgramDataDockerwindowsfilterexjneuxdwo67rh9g5rfomdpc2 Options:[rbind ro]}]: invalid windows mount type: 'bind'
 

Что это за ошибка invalid windows mount type: 'bind' ?

 docker --version
Docker version 19.03.13, build 4484c46d9d`
 

Я также следил за документами здесь: https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/building-sample-app но все равно получил ту же invalid windows mount type: 'bind' ошибку.

Ответ №1:

изображение

В настройках docker убедитесь buildkit , что установлено значение false , указанное ниже:

   "features": {
    "buildkit": false
  }
 

После того, как это будет применено и успешно перезапущено, сборка должна продолжаться.

В документах в настоящее время упоминается, что BuildKit — это функция, «поддерживаемая только для создания контейнеров Linux»: https://docs.docker.com/develop/develop-images/build_enhancements /

К сожалению, при новой установке его значение по умолчанию равно true и не меняется на false при переключении на контейнеры Windows.

Комментарии:

1. Я проверил Docker на это, и отзывы, которые я слышу, заключаются в том, что buildkit не включен по умолчанию при переключении на контейнеры Windows. Если вы видите иначе, откройте проблему с шагами для воспроизведения в github.com/docker/for-win/issues

2. Сегодня эта проблема все еще возникает в новой Windows 10 и новой установке. И Docker хочет взимать плату за рабочий стол Docker…