从2.3.0.2版本开始,docker桌面可以安装在Windows 10家庭版上,因为它可以使用Windows功能WSL2而不是Hyper-V。Windows 10 家庭版未安装 Hyper-V。
我仅限于 Windows 10 家庭版,并且我正在从事的项目无法使用 WSL2 作为 docker-for-windows 后端;仅适用于 Hyper-V。我使用下面的批处理脚本在 Windows 10 Home 上安装了 Hyper-V,但无法在 docker 中从 WSL 切换到 Hyper-V。
该选项呈灰色。
如何在 Windows 10 家庭版上强制 docker 使用 Hyper-V 而不是 WSL2?
在 Windows Home 上安装 Hyper-V 的批处理脚本:
pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
Run Code Online (Sandbox Code Playgroud) 我的项目包含一个用于构建映像的 Dockerfile。我对该 Dockerfile 进行了修改,想看看它是否有效。所以我关闭了我的程序并使用docker image ls -a. 我使用docker rmi -f $(docker images -a -q)和删除了所有未使用的图像docker image prune -a。
但是我的图像一直没有被删除,而只是“未标记”:
Untagged: my_image:latest
Untagged: my_image@sha256:16eb92a476be0...
Run Code Online (Sandbox Code Playgroud)
在尝试删除映像之前,所有容器都已停止并删除。
当我重新启动应用程序以构建新映像时,旧映像不断被使用:
> docker image ls -a
REPOSITORY TAG IMAGE ID CREATED
/my_image latest 0d79904a74b0 2 months ago
Run Code Online (Sandbox Code Playgroud)
我如何实际删除旧图像,以便我的应用程序可以构建一个新图像?