[Docker] 在 Windows 10 子系统中安装 Docker 的踩坑经历

Step 1 请升级 WSL 版本为 WSL2

一开始 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

[Docker] 在 Windows 10 子系统中安装 Docker 的踩坑经历_第1张图片

wsl --set-default-version 2

Step 2 Microsoft Store 里安装子系统

这里 Yogurt 用的是 Ubuntu 18.04 LTS。卸载后安装的需要重启电脑,否则会安装失败。(不要问我是怎么知道的)

Step 3 安装 Docker

以前一直都是直接 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

Step 4 启动 Docker

执行完前三步之后,此时启动 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 有相同遭遇的开发者有一丝帮助

你可能感兴趣的:(Docker,docker,windows,容器)