我在WSL(Debian GNU/Linux)上安装了Docker

我在WSL(Debian GNU/Linux)中安装了docker。

首先

我安装并启动了Docker Desktop,但是我的家用电脑配置太低,导致它陷入了卡顿和冻结的状态,我无法同时进行工作,所以决定在WSL上进行安装。

2. 环境

Windows10的操作系统环境

Windows 10 Pro Insider Preview
評価コピー。Build 18875.rs_prerelease.190405-1518

WSL(Debian GNU/Linux)的环境


xxxxxx@xxxxxxxxxxxxxx:~$ cat /etc/debian_version
9.7
xxxxxx@xxxxxxxxxxxxxx:~$ cat /etc/issue
Debian GNU/Linux 9 \n \l

3. 安装操作

3.1. 绊倒

如果按照这个页面上的指示进行操作,安装本身应该很简单。只需从页面上复制并粘贴命令,就可以快速进行。页面链接如下:
https://docs.docker.com/install/linux/docker-ce/debian/#install-docker-ce

然而,使用该方法安装的最新版本的Docker,虽然Docker服务能够成功启动,但在下一阶段的容器启动时,会抛出以下错误,无法正常工作。


xxxxxx@xxxxxxxxxxxxxx:~$ docker start 209ebb8f7e26
Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:297: getting the final child's pid from pipe caused \"EOF\"": unknown
Error: failed to start containers: 209ebb8f7e26

在进行调查时发现,由于WSL不支持Docker的新功能,导致通信不稳定,建议降级使用Docker。在网络上的信息中,Ubuntu的相关内容很多,而Debian的较少。此外,关于WSL的文章更是稀少,将用英文撰写的针对Ubuntu和macOS的文章转化为适用于WSL(Debian GNU/Linux)的内容,是花费最多时间的任务。

3.2. 重新安装(降级)

20190430_2.png

请按照手册中的说明,使用以下命令来删除docker-ce。


sudo apt-get purge docker-ce

sudo rm -rf /var/lib/docker

通过以下命令指定安装docker-ce的版本进行安装。
(安装了17.03.3~ce-0~debian-stretch版本后,一切顺利。)

sudo apt-get install docker-ce=17.03.3~ce-0~debian-stretch

以下的部分很重要,但官方手册里没有写,我曾经遇到了一些问题,但如果按照以下顺序输入命令,它就能启动。

sudo cgroupfs-mount
sudo usermod -aG docker $USER
sudo service docker start

cgroupfs-mount有特殊的安全机制。如果不运行这个命令,Docker服务将无法启动。

已确认 Docker 的启动如下所示。

xxxxxx@xxxxxxxxxxxxxx:~$ sudo service docker status
[sudo] password for kazuki:
[ ok ] Docker is running.

执行容器。

sudo docker run hello-world
20190430.png

总结

如果一开始有关于降级并安装docker-ce的信息该多好,所以这次我就发帖了。如果WSL更新后,可能也会支持最新的docker,虽然不知道以后会怎么样,但我还是会将其作为备忘录总结一下。

・ 由于debian的资料较少,所以调查起来更容易使用ubuntu。
・ 在Windows管理员模式下启动终端。
・ Docker的启动命令没有在手册中列出。需要执行cgroupfs-mount命令。
・ 将docker-ce降级至17.03.3~ce-0~debian-stretch版本。
・ 同样可以参考https://qiita.com/forest1/items/ab6d8b345653c614229b。