Windows10家庭版搭建WSL加Docker的开发环境

55次阅读

共计 1800 个字符,预计需要花费 5 分钟才能阅读完成。

前言

WSL 也就是 win10 更新的一个对开发者比较友好的点了,它并不是虚拟机,而是一个模拟环境,并不能支持 Linux 中的各种操作,但是和 windows 交互非常方便,消耗很低,所以对我这种菜鸟来说做开发和测试比较合适。
docker 的好处这边也就不说了,可以去了解一下(主要是因为我也是第一次用 - -),这篇文章主要是将如何安装,对原理和概念的东西不会解释。
其实我要搭建这样的开发环境的原因比较简单,主要是下面两个原因:
1. 公司的服务器上的服务就是 Linux 加 docker 的模式,我要模拟这样的的结构方便测试和开发,正好学习一下
2. 我的开发环境是 windows 的,我希望借助 docker 和 WSL,把我的开发环境搞得干净一点(为啥不直接用 Linux 系统呢,只是因为我觉得一个电脑双系统受不了..)

安装 WSL

win10 商店里面就可以直接安装,这里的坑只有一个,就是要开启 Linux 子系统服务

安装 Docker

这里的坑就比较多了,希望我踩的坑能对你有帮助
环境:win10 家庭版

  1. 在 WSL 里面安装 Docker

参考博客:https://yeasy.gitbooks.io/docker_practice/install/
参照上面文章里面 Ubuntu 的安装方法
安装完成之后,启动 docker

sudo service docker start

这里就会报错
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
说的意思就是连接不到守护线程,虽然我也不知道这个守护线程是干嘛的,然后找到了一个国外小哥的博客:
https://medium.com/@sebagomez/installing-the-docker-client-on-ubuntus-windows-subsystem-for-linux-612b392a44c4

最关键点就是你在 WSL 里面装 docker,必须先安装 Docker For Windows 在你的系统上。
OK,那我们就去安装这个呗。
去官网上面下载。
https://docs.docker.com/docker-for-windows/install/
然后你就会发现安装不上,因为 docker 不支持 win10 家庭版 …
有些博客里面会说用 docker toolbox 的东西代替,这里我不建议用,反正我没代替成功。
解决办法第一步:修改注册表,让安装程序误以为我们是 win10 pro
定位到 HKEY_LOCAL_MACHINEsoftwareMicrosoftWindows NTCurrentVersion
修改 EditionId 的值为 Professional
然后还有要开启 Hyper- v 服务,这个东西在 win10 家庭版里面也是没有的, 所以我们需要安装。

pushd“%~dp0”

dir /b %SystemRoot%servicingPackagesHyper-V.mum >hyper-v.txt

for /f %%i in (‘findstr /i . hyper-v.txt 2^>nul’) do dism /online /norestart /add-package:”%SystemRoot%servicingPackages%%i”

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

将上面的复制到.cmd 文件中,然后用管理员运行,安装完毕之后重启电脑,在 安装和启用 windows 功能 中打开 hyper- v 服务,启动 docker for windows。
这时候我们再回到上面没有启用守护线程的问题

然后回到 ubuntun,输入

echo “export DOCKER_HOST=localhost:2375” >> ~/.bash_profile
docker version

也就是告诉 docker,他的守护线程接口,docker version 检查是否启动成功

结语

到这边我们就可以用使用 docker 了,然后还有一个很坑的点,就是修改 EditionId 的值为 Professional 这个东西,每次重启电脑,windows 会自动把它改回去,然后我们就又启动不了 docker for windows 了,如果我找到解决办法再来补一下。

正文完
 0