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
客户端
安装完成后配置docker_host
连接向docker for windows
现在就可正常使用docker
但是改环境变量只会持续到会话结束,每次打开bash都需要重新设置
因此您需要在主目录中的一个名为.bash_profile
或者 .bashrc
的文件中设置该变量
在文件末尾添加
保存后重启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
系统及版本修改以下命令
ubuntu18.04 路径
打开systemd
的docker
服务配置文件,在ExecStart
中加入以下配置
修改后保存,刷新配置,重启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
,在系统环境变量中添加:
这中方法可实现同样的效果,不过不知是否与linux
下的存在差异,可自行决定用哪种方式。
3. 配置cmder
另外,推荐一款windows
下代替cmd
的工具cmder
,毕竟cmd
真的很难用,参考下面的文章。
可将其设置为启动bash
,自动进入linux
子系统。
__EOF__

本文链接:https://www.cnblogs.com/yg0070/articles/13841932.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通