Windows上使用linux子系统(WSL)使用Docker

Posted 跨链技术践行者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 10linux子系统后本想终于可以完美解决,可真实测试后发现,现在的版本没有办法在子系统中使用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子系统提供安装,像UbuntuopsnsuseCentos等,在安装前需要在程序与功能中打开适用于Linux的Windows子系统功能。

如果是企业版windows或者server版没有windows app store,需要查看是否支持子系统功能,如果支持可以手动安装子系统,安装与下载方法参考微软官方文档

https://docs.microsoft.com/zh-cn/windows/wsl/install-manual

安装完成后在cmd中输入bash,进入子系统,或者ctrl+r,bash进入

如果想深入了解WSL可查看微软官方文档

https://docs.microsoft.com/zh-cn/windows/wsl/about

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,而hypervm虚拟机只能启动一个,然而又有需要使用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

打开systemddocker服务配置文件,在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真的很难用,参考下面的文章。

https://www.jianshu.com/p/5b7c985240a7

可将其设置为启动bash,自动进入linux子系统。

以上是关于Windows上使用linux子系统(WSL)使用Docker的主要内容,如果未能解决你的问题,请参考以下文章

Windows 进程和 WSL Linux 进程之间的共享内存

最详尽教程完整介绍-Windows 的 Linux 子系统-WSL1&WSL2

Windows系统中的Linux—WSL安装及简单使用

WSL2的安装与使用-Windows与Linux双系统的新选择

[WSL][ubuntu][原创]windows上ssh WSL的linux子系统

在Windows10上安装WSL使用binwalk命令