在Windows上运行docker,有几种方式:
- 安装虚拟机软件,无论是VMWare,VirtualBox还是Hyper-V,装上Linux就可以。
- 安装Docker Desktop,本质上还是用虚拟机。https://www.docker.com/products/docker-desktop
也是本文要说的,Windows 10 支持的Linux子系统 WSL 2已经支持运行docker(还支持GPU运算)。废话不说,步骤:
- 升级到Windows 10 2004,不会看版本的话,在WIN+R弹出的运行对话框里,敲入
winver
命令,弹窗里会提示"版本1903/2004/...
"。如果系统不是Win10或者不是最新版,看这里:https://www.microsoft.com/zh-cn/software-download/windows10 - 在Windows 10上安装Windows子系统和Linux,看这里:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
- 打开子系统,安装docker。如果打开子系统报错提示“需要禁用旧版控制台”,那么:
打开 cmd.exe;右键单击标题栏 -> 选择“属性”-> 取消选中“使用旧版控制台”
- 如果安装的子系统选择的是Ubuntu,那么,可以用官方脚本安装docker:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 启动docker命令
sudo systemctl start docker
,如果报错,那么检查一下子系统是否不是以管理员运行的。
- 升级到Windows 10 2004,不会看版本的话,在WIN+R弹出的运行对话框里,敲入
- *
11月更新:
WSL 2的底层,仍然是Windows虚拟机。安装了WSL2后,安装的Ubuntu等子系统,都是在虚拟机里安装的,所以Ubuntu里是用单独的子网来与宿主机联网的。通常会获取一个172.0.0.0/8网段的IP。这就会导致WSL2与VMWare等虚拟化方案是无法共存的。同时,在Ubuntu里安装的服务,也无法被宿主机所在局域网里的其他机器直接访问到。当然也不是没有办法,可以在宿主机上执行:
netsh interface portproxy add v4tov4 listenport=22 connectaddress=127.0.0.1 listenaddress=* protocol=tcp
命令,把宿主机网卡做为子系统网卡的代理。
在Ubuntu等子系统安装好之后,可以安装一下Windows Terminal APP,以及最新版的Powershell,没错,这玩意现在是GitHub上的一个单独项目,目前的新版本是7.1,装好这两个以后,可以让Windows Terminal同时支持内置Powershell, Powershell 7,传统的command prompt,子系统的Ubuntu console,以及Azure Cloud Shell,可谓集大成者。再配上Fira Code字体,能媲美MAC系统的console了。然后再装上chocolatey,缺什么Visual Studio Code,都choco install一下,跟yum/apt一样一样的。最牛的,子系统里执行code
命令,马上给你装上vscode server,然后就可以在宿主机里打开vscode直接编辑、运行子系统里的代码了,以后再也不用担心Windows上写的程序,到Linux上会有各种水土不服了。
这才是20年代该有的生产力搭配。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。