Windows上使用linux子系统(WSL)使用Docker
前言
windows 10 2004版本已更新wsl2,可实现在Linux子系统中安装使用docker,此教程为2004以下版本使用docker,建议尝试更新windows 10 2004尝试使用wsl2。
本文介绍在非Windows10 2004版本下如何使用Docker的两种方式
windows Linux子系统 + WLS + Docker for windows
windows Linux子系统 + WSL + VM虚拟机
背景
在之前使用Docker时一直使用的Docker for windows,然而windows版很多命令并不支持;之后Windows 10出linux子系统后本想终于可以完美解决,可真实测试后发现,现在的版本没有办法在子系统中使用Docker ,虽然可以安装成功但镜像无法启动。之后就想到可否在windows上安装Docker for windows,子系统使用Docker CLI来调用Windows上的Docker服务,经过验证发现可行。但需要开启hyper虚拟化,并且无法再使用vm虚拟机,所以本人最后用了另外一种方式,在虚拟机中安装Docker。
windows Linux子系统 + WLS + Docker for windows
前提
打开Hyper-V,并打开cpu虚拟化功能
安装Linux子系统(WSL)
安装Docker for Windows
1.1 安装Linux子系统(WSL)
现在Windows app store上已经有很多Linux子系统提供安装,像Ubuntu,opsnsuse,Centos等,在安装前需要在程序与功能中打开适用于Linux的Windows子系统功能。
如果是企业版windows或者server版没有windows app store,需要查看是否支持子系统功能,如果支持可以手动安装子系统,安装与下载方法参考微软官方文档
安装完成后在cmd中输入bash,进入子系统,或者ctrl+r,bash进入
如果想深入了解WSL可查看微软官方文档
1.2 配置Docker for Windows
在Docker设置中需要开启2375端口,以便守护程序在TCP端点上进行侦听。

1.3 配置WSL
我们需要在WSL上安装Docker客户端
apt install docker.io
安装完成后配置docker_host连接向docker for windows
export DOCKER_HOST=tcp://127.0.0.1:2375
现在就可正常使用docker

但是改环境变量只会持续到会话结束,每次打开bash都需要重新设置
因此您需要在主目录中的一个名为.bash_profile或者 .bashrc的文件中设置该变量
vi ~/.bashrc
在文件末尾添加
export DOCKER_HOST=tcp://127.0.0.1:2375 //ip根据实际修改,参考2.2


保存后重启bash执行docker祥光命令可以照常执行
第一种方式需要开启hyper,而hyper与vm虚拟机只能启动一个,然而又有需要使用vm的需要,这是就不能使用docker for windows,下面介绍在vm中安装docker来实现。
windows Linux子系统 + WSL + VM虚拟机
2.1 vm中安装linux版docker,配置docker
vm中安装linux就不详述了,自行百度,安装docker也是,都很简单,下面介绍下安装完docker后需要配置哪些东西。
与 1.2 相同,也是需要开启2375端口,对外提供api调用来实现。
自行根据自己linux系统及版本修改以下命令
vi /usr/lib/systemd/system/docker.service
ubuntu18.04 路径
vi /lib/systemd/system/docker.service
打开systemd的docker服务配置文件,在ExecStart中加入以下配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

修改后保存,刷新配置,重启docker服务
systemctl daemon-reload //1.加载docker守护进程
systemctl restart docker //2.重启docker服务
查看已开启的tcp端口中是否有2375,有的话则证明已配置成功。

这是docker服务端的配置就完成了,如果没有使用 systemd 工具,自行百度实现方式吧。
2.2 配置WSL
此步骤与 1.2 相同,ip地址改为虚拟机ip地址,也可设置成固态ip,然后映射到本机端口,依然使用127.0.0.1
2.3 windows环境变量
如果不想使用linux子系统也可安装docker for windwos, 但不起服务,只是用Docker CLI,在系统环境变量中添加:
变量名:DOCKER_HOST
变量值:tcp://127.0.0.1:2375 //ip根据实际修改,参考2.2
这中方法可实现同样的效果,不过不知是否与linux下的存在差异,可自行决定用哪种方式。

3. 配置cmder
另外,推荐一款windows下代替cmd的工具cmder,毕竟cmd真的很难用,参考下面的文章。
可将其设置为启动bash,自动进入linux子系统。


浙公网安备 33010602011771号