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 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
子系统。
以上是关于Windows上使用linux子系统(WSL)使用Docker的主要内容,如果未能解决你的问题,请参考以下文章
Windows 进程和 WSL Linux 进程之间的共享内存
最详尽教程完整介绍-Windows 的 Linux 子系统-WSL1&WSL2
WSL2的安装与使用-Windows与Linux双系统的新选择