WSL2下安装docker
本文默认已安装WSL2,若系统Win10系统安装的WSL1版本,需升级WSL2,再按照以下步骤操作,升级方法请参考WSL1升级为WSL2
本文模拟正常Ubuntu系统安装docker,还有一种简单模式,安装 Docker Desktop,若想了解,请参考WSL 2 上的 Docker 远程容器入门
1、安装Ubuntu发行版
打开Microsoft Store,搜索ubuntu,界面如下所示:
下载最新版Ubuntu 22.04.2 LTS即可
完成之后在开始菜单会出现Ubuntu菜单项。打开它,Ubuntu将会进行初始化操作。等待几分钟后按照提示,为Ubuntu设置用户名和密码。
最后,我们需要验证Ubuntu是否在WSL2的环境下启动。在菜单搜索栏搜索PowerShell,并以管理员权限打开,如下图所示:
执行命令:
wsl -l -v
可以看到信息,如图所示:
说明Ubuntu在WSL2下已经正常运行
如果发现VERSION为1,说明Ubuntu运行在WSL1下。需要手工切换。
首先关闭WSL下运行的Linux,执行:
wsl --shutdown
再进行版本切换,执行:
wsl --set-version Ubuntu-22.04 2
执行命令后等待片刻。等命令行提示转换完成,我们已经成功将Ubuntu切换到WSL2环境。
2、安装docker
首先进入Ubuntu shell,更换Ubuntu官方源为国内源,加快下载速度。执行。
vim /etc/apt/sources.list
将内容替换为下方:
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal universe
deb http://mirrors.aliyun.com/ubuntu/ focal-updates universe
deb http://mirrors.aliyun.com/ubuntu/ focal multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-security universe
deb http://mirrors.aliyun.com/ubuntu/ focal-security multiverse
接下来添加GPG密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
更换docker软件源为国内镜像
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
更新软件包
sudo apt update
此时不能直接启动docker,Ubuntu22.04使用了iptables-nft,而WSL2不支持,可以通过以下命令进行修改
sudo update-alternatives --config iptables
There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/sbin/iptables-nft 20 auto mode
1 /usr/sbin/iptables-legacy 10 manual mode
2 /usr/sbin/iptables-nft 20 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/sbin/iptables-legacy to provide /usr/sbin/iptables (iptables) in manual mode
修改后,再启动docker,WSL2经过测试无法使用systemctl
命令,因此我们使用service
命令启动Docker daemon。命令如下所示:
sudo service docker start
启动之后,再执行以下命令进行验证:
sudo service docker status
若看到以下信息,说明docker启动成功
* Docker is running
至此,WSL2成功完成docker安装。