一开始 Yogurt 安装子系统的时候没有想过这个问题,直接就在 Microsoft Store 里搜索 Ubuntu 18.04 LTS 直接安装就完事了。结果在安装 docker 的时候就报错,然后 docker 无法启动。遍查各种资料无果,最后有篇文章说到可能是 linux 内核版本比与 docker 的版本低导致的,遂尝试升级 WSL 版本,结果可行。
注意:先升级 WSL 版本,后安装子系统,切记!!!
然后打开 cmd 或 powershell,切换默认 WSL 版本
官方文档:https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package
wsl --set-default-version 2
这里 Yogurt 用的是 Ubuntu 18.04 LTS。卸载后安装的需要重启电脑,否则会安装失败。(不要问我是怎么知道的)
以前一直都是直接 sudo apt install docker.io
就可以安装成功的,一般来说貌似在主机里安装 Docker 这条语句也是可以直接用的,但是在子系统里就是不知道为什么不能用。所以下面是实测了十数次都成功的安装操作。
# 卸载原 docker, 一般新装的子系统是没有的, 这一步可以跳过
sudo apt remove docker docker-engine docker.io containerd runc
# 更新一下源, 一般情况下第一次安装子系统的时候大家都会做这个操作, 正常情况下也可以跳过
sudo apt update
# 安装 apt 依赖包,用于通过HTTPS来获取仓库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。
sudo apt-key fingerprint 0EBFCD88
# 使用以下指令设置稳定版仓库
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"
# 更新上述添加的源
sudo apt update
# 安装 Docker
sudo apt install docker-ce docker-ce-cli containerd.io
以上步骤参考菜鸟教程:https://www.runoob.com/docker/ubuntu-docker-install.html
执行完前三步之后,此时启动 Docker 你一定会看到这么一句:
> docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
# 如果没看到,而是正常启动话,那么就要恭喜你了,否则,需要往下阅读
这时需要添加 daemon.json
文件
sudo vim /etc/docker/daemon.json
配置以下仓库源,为了 pull images 快一点
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
]
}
然后运行以下语句:
sudo service docker start
正常来说,到这一步就已经没有问题了。
但是,这种极其无语的操作也出现在了 Yogurt 的身上。
换了一条电脑去安装的时候,到这一步死活无法启动 Docker 的服务,给我气炸了。后面还是网上的一篇文章提醒了一下。以管理员身份运行
启动 Ubuntu 18.04 LTS 就可以了,简直了!!!
希望以上能对跟 Yogurt 有相同遭遇的开发者有一丝帮助