史上最全从0开始教你玩转wsl2+docker,构建自己的开发环境

1、安装wsl

需要windows版本大于

d7bf687a3c3a654b7fee10568ea538d8.png

搜索启用或关闭windows功能

36ad77bb8c9f4314b650d49d0c80b8ed.png

把图片中红点标注的功能勾选,注意勾选hyper-v就不能使用虚拟机类软件,如vm,安卓模拟器一类,点击确定,重启电脑。

打开任务管理器

70315604273b452584e084dd4dd01f27.png

确保虚拟化已经启用,部分设备可能需要去bios设置,自行查阅下相关资料

下载64位wsl2内核升级包    https%3A//wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

安装后,设置默认wsl版本

wsl --set-default-version 2

安装linux系统

方法一:可以从微软商店搜索安装,有概率会失败

方法二: 翻到页面最下方,下载你需要的版本    旧版 WSL 的手动安装步骤 | Microsoft Learn在旧版 Windows 上手动(而不是使用 wsl 安装命令)安装 WSL 的分步说明。https://docs.microsoft.com/zh-cn/windows/wsl/install-manual给下载到的文件添加一个.zip后缀,用解压缩软件解压到你想安装的地方

e4d4b9658f4b42bb8752ca84d75377e4.png

点击里面的ubnutu.exe文件,等待一会就会安装成功

去cmd中输入 wsl -l -v 查看安装的子系统版本

2、安装完成后的设置:

安装完成后会设置自己的用户名,密码(注意不是root账户)

设置root密码

sudo passwd

切换root用户测试

su root

每次切换root用户很麻烦,可以用powershell执行下面这条命令,默认root用户登录,其中参数自己替换下

C:\Users\用户名\AppData\Local\Microsoft\WindowsApps\ubuntu版本.exe config --default-user root

开启ssh服务

首先确保是root用户

vi /etc/ssh/sshd_config

进入之后,修改如下配置,可以直接复制我的,(我修改的项加了注释)

#	$OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.Port 22   #22端口,ssh服务默认端口
#AddressFamily any
ListenAddress 0.0.0.0  #所有ip都可以联通
#ListenAddress ::#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key# Ciphers and keying
#RekeyLimit default none# Logging
#SyslogFacility AUTH
#LogLevel INFO# Authentication:#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
PermitRootLogin yes  #把上面那行相同的注释掉,新加一行,允许root账户登录#PubkeyAuthentication yes# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile	.ssh/authorized_keys .ssh/authorized_keys2#AuthorizedPrincipalsFile none#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes #允许使用密码登录
#PermitEmptyPasswords no# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none# no default banner path
#Banner none# Allow client to pass locale environment variables
AcceptEnv LANG LC_*# override default of no subsystems
Subsystem	sftp	/usr/lib/openssh/sftp-server# Example of overriding settings on a per-user basis
#Match User anoncvs
#	X11Forwarding no
#	AllowTcpForwarding no
#	PermitTTY no
#	ForceCommand cvs server

重启ssh项目

sudo service ssh restart

使用ssh工具测试链接

20ee67686376478fad02905b22ab773f.png

成功

3、windows下docker-desktop的安装

官网下载docker-desktop的安装包,一定要确保第一步开启的windows功能都开启了

Download Docker Desktop | Docker   

正常软件安装流程

进入软件,点击小齿轮进入设置

7eb77bd241f1493489c332a98338c274.png

勾选你安装的ubnutu

 cdc0ac2185c94feeb72548e0fb98572a.png

 更改镜像仓库地址,我使用的阿里云,网上也有好多,比如中科大等

{"debug": true,"experimental": false,"registry-mirrors": ["https://lcuu39wt.mirror.aliyuncs.com"]
}

设置完之后,打开终端,输入docker ps

9ca5bbdaf547478cbad6b2c818fedb8f.png

 就会发现docker和你的linux子系统已经连接起来了

4、存在的问题及解决思路

问题1:wsl每次重启都会给子系统随机分配一个新ip,导致ssh工具每次都要输入新ip,不利于开发

问题2:ssh服务不会自动开启

解决思路:

这是作者写好的一个设置子系统ip的批处理脚本,用管理员权限运行就会自动关闭wsl,设置wsl网卡相关信息,重启wsl,已经打包成了exe供大家使用

设置子系统ip.exe官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

但是使用这个脚本还有个问题,就是因为重启了wsl,docker和wsl之间的连接会断开,需要重启一下docker进程和ssh服务,也可以使用脚本来完成这个操作,但是涉及到文件路径问题,所以就不提供了,可以使用chatgpt来完成这个小功能,也可以手动操作一下

重启ssh服务的命令,根据需要修改参数哦

C:\Users\用户名\AppData\Local\Microsoft\WindowsApps\ubuntu2004.exe run "sudo service ssh restart"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/71939.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 包体积优化建议-资源篇

这是 Android 官方文档给出的一些减少包体积的建议,最近正好在看这方面内容,顺手记录、分享一下。本文主要是针对 Android 的资源(Resource) 相关优化建议。 1 移除无用资源 使用 lint 静态代码分析工具查找出未使用的 res 资源。 注意 assert 和 lib…

云炬Android开发笔记 2-2 Android studio项目上传到Github及无法连接Github的问题处理

本文将介绍如何将AS上的项目发布到GitHub上: 选择 VCS——enable verSion control integrate : 选择GIT: 此时可以发现左侧的类都变红了: 此处的颜色含义: 绿色,已经加入控制暂未提交 红色,未加…

【Python】JupyterLab 4.0 来了

来源丨Deephub Imba JupyterLab 是 Jupyter Notebook 的下一代版本,它提供了更强大的功能和更灵活的用户界面,6月6日,官方发布了JupyterLab 4.0的说明,并且说该版本是下一个主要的版本。 JupyterLab的主要改进是: 用户界面&#x…

关于安装基于Anaconda的Pytorch报错问题(文章为所有安装步骤)

由于一开始Pycharm无法下载资源包,所以打算重新安装一下Anaconda,没想到想在官网下载Anaconda时文件丢失,缺少Sprits文件,在网上尝试了很多方法也没有成功,最后猜测应该是之前卸载Anaconda时没有卸载干净,导…

分享一个免费开源的视频剪辑软件(Shotcut)-附带安装教程以及中文设置

Shotcut是什么? Shotcut是一个免费开源跨平台的视频编辑器,内置丰富的视频效果,音频效果,转场效果,最重要是shotcut这款软件操作极其简单,尤其适合新手,是新手入门自媒体的最佳工具 下载Shotcut 官网地址: https://www.shotcut.org 官网下载页面: https://www.shotcut.org/…

剪映专业版大更新:一款全能好用的视频编辑工具

剪映专业版 for Mac是一款全能好用的视频编辑工具,使用剪映专业版能够轻松对视频进行各种编辑,包括卡点、去水印,特效制作、倒放、变速等,还有专业风格滤镜,精选贴纸给你的视频加点乐趣。 本次更新功能: …

剪映专业版v1.4.1正式版!一款全能好用的视频编辑工具

电脑版的剪映称之为“专业版”,相对手机版功能更加强大。比如,Windows 版和 Mac 版支持多视频轨 / 多音频轨编辑,支持 4K 视频分辨率与 60fps 帧率,可一键添加变速效果,拥有多类型蒙版,多视频轨道编辑创作等…

为什么都不想去中科创达_排了10000桌的超级文和友,我这辈子都不想再去了

■ 作者 桃之 ■ 内容转载自Vista氢商业(ID:Qingshangye666) 提起长沙,你最先想到什么? 芒果TV?No,No,No! 而今的长沙主题热议,是茶颜悦色和超级文和友。 当你朋友圈的人在长沙玩时…

HTTP代理服务器

代理服务器实现流程 创建一个监听服务器,监听客户端的连接。客户端连接上后,将客户端要上网的信息,发给网络web服务器,然后从那里读取数据,再发给客户端。 注:客户端是通过浏览器的设置,来设置…

nginx获取代理服务ip及客户端真实ip

一、问题背景   在实际应用中,我们可能需要获取用户的ip地址,比如做异地登陆的判断,或者统计ip访问次数等,通常情况下我们使用 request.getRemoteAddr() 就可以获取到客户端ip,但是当我们使用了nginx 作为反向代理后…

如何使用国内代理ip?

现在市面上有很多代理ip,功能多种多样,五花八门的产品让用户挑花了眼,下面是购买代理IP时应该是注意的几点。 代理IP类型代理IP分为多种类型,按照匿名度区可分为透明代理、普通代理、高匿代理;按照用途可分为HTTP代理…

获取客户端IP地址(nginx代理)

需求 对接支付系统的时候, 需要传入 付款方,也就是客户端的IP地址 现象 客户端的请求走我们的 nginx 代理了, 获取到的客户端ip地址不对, 变成了 nginx 服务器的地址了 data 的值是nginx服务器的地址, 这样很明显不对 没有加之前的配置 解决方案 在 nginx 的配置里面加上…

代理ip

proxies有两种协议,http 和 https,访问http协议的网页,需要将代理设置成http,https 也是如此,如果设置错误,仍会使用你自己的IP地址。 https://icanhazip.com/ 这个链接可以查看你访问这个网页所使用的的I…

ip代理

为什么会出现IP被封 网站为了防止被爬取,会有反爬机制,对于同一个IP地址的大量同类型的访问,会封锁IP,过一段时间后,才能继续访问 如何应对IP被封的问题 有几种套路: 修改请求头,模拟浏览器…

测试一下博弈Ai能不能让你成为一个出色的服装设计师

笔者也不是专业的设计人员,就是突发奇想,看看怎么利用博弈AI的设计一款自己风格的衣服。 首先我们打开博弈AI的官网,链接:博弈Ai-基于ChatGPT4及3.5的智能聊天机器人国产镜像 我们把自己的创意和要求提交给博弈AI,就得…

传统企业如何面对电子商务的发展

传统企业如何面对电子商务的发展 在现代生活中,人们对电子商务已经不再陌生。但是随着在电子商务的快速发展,传统零售企业的生存环境变得更加困难,不但面临着上游原材料价格飞涨的困扰,还受到下游渠道商、零售商、品牌商的多重挤…

2022跨境电商新战场:海外社交电商发展前景分析

社交电商正在慢慢改变人们的购物习惯。最近几年,国内由于疫情和电商平台流量红利减少的影响,出现了一批已抖音、快手为代表的社交电商,且迅速大火。随着TikTok在海外的不断布局,社交电商模式的影响力也在不断扩大。作为Nox聚星的营…

电子商务时代,企业社交电商转型要做什么?

当前,全球经济一体化已经成为一种趋势,电商企业的出现也迅速改变了传统的经济交易方式和经济的形式,进一步促进了经济结构的重组及调整,推动了工业经济快速向信息经济转换。 电子商务的诞生给世界经济发展带来了新的推动力,并且给企业创造了新的商业机遇,企业可以提…

盘点两个神器,快速告别垃圾短信邮件

前言 在日常生活中,我们时常会接收到一些垃圾短信和邮件,造成这种原因就是因为我们使用自己的手机号码在 App 上 注册了账号,导致手机号泄露,成为了别人发财的工具。 一、如何避免接收垃圾短信 众所周知,针对短信和…

使用 ChatGPT、Stable Diffusion、React 和 NodeJS 构建网站画廊

TLDR 在本文中,您将学习如何构建一个 Web 应用程序,该应用程序使用 ChatGPT 和 Stable Diffusion 为您提供的任何网站描述生成徽标和合适的域名。 介绍 人工智能正在接管世界。这些技术每天都在震撼着我们的世界:ChatGPT 和 Stable Diffusion…