#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…