下载地址:https://docs.docker.com/desktop/install/windows-install/
双击下载的exe文件,都选择使用默认设置,等待安装完成即可。
参考菜鸟教程
Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker
Desktop for Windows 所使用的虚拟机。
注意:这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15
及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V!
双击启动Docker Desktop时,出现报错Docker Desktop requires a newer WSL kernel version.
报错原因是WSL不是最新版,现在Docker Desktop默认使用WSL 2来运行,而不是以前的Hyper-V。
WSL是适用于 Linux 的 Windows 子系统 ,可让开发人员直接在 Windows 上按原样运行 GNU/Linux
环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销。WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在
Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。
以管理员方式打开windows命令行(直接打开没有操作权限),输入命令:wsl --update
再次双击打开Docker Desktop,可以看到使用的wsl2虚拟引擎,而不是Hyper-V。
运行成功后配置需要的加速源,加快下载的速度。注意在原配置后加一个逗号:
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
在命令行中输入docker info
命令,可以在末尾看到配置后的结果:
docker默认安装路径一般在C:\Program Files\Docker
WSL发行版默认安装路径在%LOCALAPPDATA%/Docker/wsl目录
docker的运行数据、镜像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中,后续安装docker镜像和容器会让C盘空间紧张。
可以通过以下步骤来迁移镜像的路径:
1.关闭Docker Desktop
2.在命令行输入关闭wsl的命令:wsl --shutdown
3.将docker-desktop-data导出到你想放置的位置(后缀名设为.tar)
wsl --export docker-desktop-data PATH\FILE.tar
// PATH为导出地址,例如:D:\docker-vm-source
// FILE为导出后的文件名称,例如:docker-desktop-data
// 完整命令:`wsl --export docker-desktop-data D:\docker-vm-source\docker-desktop-data.tar`
4.在命令行输入注销原docker-desktop-data的命令:wsl --unregister docker-desktop-data
5.重新导入docker-desktop-data
wsl --import docker-desktop-data org_folder src_file --version 2
// org_floder:想存放镜像和容器的目录
// src_file:步骤3中导出的文件名
// 完整命令:`wsl --import docker-desktop-data D:\docker-vm-source\DockerDesktop D:\docker-vm-source\docker-desktop-data.tar --version 2`
通过docker info 命令可以看到docker虚拟机的根目录为/var/lib/docker。
我们是在win10系统安装的docker,怎么进入这个目录呢?进入docker虚拟机的方法如下:
1.获取可访问Docker守护程序的容器
docker run --privileged -it -v /var/run/docker.sock:/var/run/docker.sock jongallant/ubuntu-docker-client
2.运行具有完全root访问权限的容器
docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh
3.切换到文件系统
chroot /host
windows版docker的使用方式和linux版docker一致,通过命令行操作即可。
在安装若干个镜像和容器后,查看windows的任务管理器和资源监视器发现vmmem的虚拟进程消耗了11G左右的内存资源
通过查看各docker容器的内存发现总计也才3G左右
解决WSL2中Vmmem内存占用过大问题的步骤如下:
1.按下Windows + R 键,输入 %UserProfile%
并运行进入用户文件夹
2.新建文件 .wslconfig ,然后用记事本编辑,填入以下内容并保存:
#.wslconfig
[wsl2]
memory=4GB
swap=0
localhostForwarding=true
memory为虚拟进程内存上限,这里我限制最大4GB,可根据自身电脑配置设置。
docker命令报错:error during connect: In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json: open //./pipe/docker_engine: The system cannot find the file specified.
处理过程参考:https://blog.csdn.net/nyasm/article/details/121569182和https://blog.csdn.net/sunshineGGB/article/details/122838156
1.进入docker安装目录:cd "C:\Program Files\Docker\Docker"
2.切换 Docker 守护程序:DockerCli.exe -SwitchDaemon
3.如果遇到下面错误信息,继续往下执行修复
以管理员身份运行Window Terminal(Windows PowerShell),输入以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Hyper-V", "Containers") -All
执行完命令后重启电脑即可。