赞
踩
对于使用Windows作为桌面系统的朋友,想要学习docker的使用,docker的环境无疑就是最初的学习障碍了。虽然现在有了Docker Desktop(最新版也支持了WSL2,但性能还是不够高),然其性能和体验度都不太高。为了部署一套微服务架构的程序,我16G的内存很多时候是不够用的。为了提高docker的运行性能本文就介绍一下如何在Windows10中启用WSL2,并安装Linux(Ubuntu)子系统,并在Ubuntu中部署docker。
WSL其实就是windows subsystem for linux的缩写,2表示版本。就是说你的电脑启用WSL2后,就可以把Linux(各个版本)操作系统当作一个应用程序安装到你的Windows系统中,你启动这个应用程序后就进入到Linux系统中了,你可以象使用原生Linux操作系统一样操作这个应用程序。
WSL2的启用是对Windows10的版本有要求的,windows的内部版本要高于19041才行,因此在启用WSL2时,请先升级你的Windows到最新版本。
3.1.1 启用WSL有2种方式,第一种方式是图形操作的方式,即在控制面板-程序- 启用或关闭windows功能,勾上"适用于Linux的Windows子系统"选项,如下图:
3.1.2 第二种方式是通过Power Shell命令的方式,首先以管理身份打开Windows Power Shell,然后输入以下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
3.2.1 开启虚拟机平台也有2种方式,第一种是图形操作的方式,即在启用或关闭Windows功能中勾选"虚拟机平台",如下图:
3.2.2
第二种方式是通过Power Shell命令的方式,首先以管理身份打开Windows Power Shell,然后输入以下命令:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
首先以管理身份打开Windows Power Shell,然后输入以下命令:
wsl --set-default-version 2
适用于x64计算机的WSL2 Linux内核更新包下载
详细请参考微软官方文档:https://docs.microsoft.com/zh-cn/windows/wsl/install-manual
4.1 首先打开Microsoft Store,直接搜索Ubuntu,在搜索结果中找到一个版本点击“获取”按钮进行安装,我安装的是Ubuntu 22.04.4 LTS,,安装完毕如下图:
4.2 点击上图中的“打开”按钮或者在开始菜单中找到Ubuntu 20.04.0 LTS点击,就会打开一个控制台窗口,首次进入系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上,再次进入启动时间不到一秒。
4.3 首次进入Ubuntu会提示让你输入一个新的用户名,咱们按提示输入一个新的用户名就可以,然后会提示输入密码2次,根据自己情况进行设置就行。之后就可以使用Ubuntu了。
4.3 关于Linux分发版本的选择,这个并没有什么特殊限制,纯属应用场景需要和个人偏好,常用的Linux分发版本如下:
在Microsoft Store中安装的Ubuntu基本是一个空白的简易系统,很多常用的工具和包都没有,因此要想正常使用Ubuntu,我们还需要安装很多工具包,比如网络工具包(支持ifconfig、netstat等命令的使用);还有支持http下载的工具包(apt-transport-https、ca-certificates、curl、sofware-properties-common等等)。但由于国内外网络限制的问题,我们在使用apt-get install安装软件时,如果软件源的地址不能正常访问就会导致失败,因此我们安装完Ubuntu后的第一步就是修改软件源。我们可以使用阿里提供的软件源。具体需要修改Ubuntu的/etc/apt/sources.list文件内容。
首先把原来的/etc/apt/sources.list文件备份一下,命令如下:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
使用vim工具打开/etc/apt/sources.list,命令如下:
sudo vim /etc/apt/sources.list
注释掉原来的内容或者删除原来的内容,然后根据阿里官网提供的软件源地址进行编辑,注意不同版本的Ubuntu,软件源地址不同,详情参考:https://developer.aliyun.com/mirror/ubuntu
我的Ubuntu版本是20.04.4,因此对应的内容如下:
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
# 预发布软件源,不建议启用
# deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
如下图:
修改完毕按ESC,输入:wq,保存/etc/apt/sources.list
/etc/apt/sources.list修改保存后要使之生效,需要执行以下命令
5.2.1 更新软件源,命令如下:
sudo apt-get install update
5.2.2 更新已安装的包,命令如下:
sudo apt-get install upgrade
5.2.3 更新apt包索引,命令如下:
sudo apt-get update
为了方便在Windows端或者其他同事的电脑上使用MobaXterm远程操作Ubuntu,我们首先要在Ubuntu上安装openssh-server,安装命令如下:
sudo apt-get install net-tools openssh-server
安装完毕openssh-server后需要启动ssh服务,命令如下:
sudo service ssh start
然后通过以下命令检测ssh服务是否已启用
sudo ps -e | grep ssh
如果结果如下,则说明正常启用了。
默认安装完openssh-server后,如果使用MobaXterm创建一个SSH会话连接时是不能正常连接的,会提示公钥缺失。我们需要开启ssh密码验证,这样就可以在MobaXterm端输入用户密码进行远程连接了。
使用vim命令打开/etc/ssh/sshd_config,命令如下:
sudo vim /etc/ssh/sshd_config
找到PasswordAuthentication no
改为PasswordAuthentication yes
如下图:
之后按ESC,输入:wq,进行保存退出vim。
重启ssh服务的命令如下:
sudo service ssh restart
然后输入ifconfig,查看一下Ubuntu的ip地址,如下图:
在MobaXterm中新建一个Session,输入Ubuntu的IP地址和用户名,如下图:
点击OK,进入会话,第一次会提示输入密码,把之前设置的密码输入后回车就行了。这样就远程连接上了。如下图:
命令如下:
sudo apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
执行过程如下:
安装命令如下:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
执行结果如下:
命令如下:
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable"
然后对软件源进行更新,如下:
sudo apt-get update
以上命令其实就是修改的/etc/apt/sources.list的内容并执行更新。
注意,不要使用${lsb_release -cs}通配符,因为会导致在/etc/apt/sources.list中添加多个源,如果某个源地址无效,就会导致后面的docker安装失败。那样还需要手动修改/etc/apt/sources.list。
安装命令如下:
sudo apt-get install docker-ce docker-ce-cli containerd.io
安装过程如下图:
sudo service docker start
执行如下图:
至此,docker部署完毕。
虽然我们能够象使用原生Ubuntu系统一样使用WSL2下的Ubuntu,但是有些指令是不能执行的,比如关机(shutdown)和重启命令(reboot)。执行如下图:
那我们如何实现子系统的重启和关闭呢,其实WSL2子系统是通过Windows10的LxssManager服务管理的,因此我们只要停止和启动LxssManager服务就实现了WSL2子系统的关闭和启动。首先以管理员方式打开Windows PowerShell或者CMD。然后执行以下命令:
net stop LxssManager
net start LxssManager
执行如下图:
这样就实现了WSL2子系统Ubuntu的重启操作,当然你重启Windows10时也会把WSL2子系统进行重启的。
我们在Windows10的WSL2子系统Ubuntu做了一些软件安装和配置,然后重启,发现有些配置失效了,检查发现里面有些配置用到了Ubuntu的IP地址。但是每次重启WSL2子系统后,通过ifconfig执行查看eth0的IP地址都会不同。起始通过在Windows主系统中我们通过netstat -a -n命令分析就会发现,你在WSL2子系统Ubuntu部署的所有服务所占用的端口都会自动映射到Windows主系统的127.0.0.1这个地址上。也就是说你访问127.0.0.1:port就相当于访问Ubuntu的eth0的IP:port。也就说我们在其他程序或服务用要调用或引用Ubuntu子系统部署的服务时,直接写127.0.0.1:port,port就是服务占用的端口号,而无需关注Ubuntu子系统的IP变化问题。
举例:
- 在Windows的MobaXterm建立SSH会话时,Remote Host直接填入127.0.0.1即可。
- Ubuntu子系统部署了docker,然后docker下拉了nacos镜像,并运行了此nacos镜像,占用了8848端口,在windows的java程序开发微服务时配置nacos地址为:127.0.0.1:8848即可。
sudo docker run -d --name nacos -e MODE=standalone -p 8848:8848 nacos/nacos-server
- 1
- Ubuntu子系统部署了docker,然后docker下拉了redis镜像,并运行了此redis镜像,占用了6379端口,在windows的java程序开发微服务时配置redis地址为:127.0.0.1:6379即可。
sudo docker run -itd --name redis -p 6379:6379 redis
- 1
- Ubuntu子系统部署了docker,然后docker下拉了fastdfs镜像,并分别运行此fastdfs镜像为tracker和storage,如下:
sudo docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh sudo docker run -d --name storage --net=host -e TRACKER_IP=127.0.0.1:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh
- 1
- 2
在windows的java程序开发微服务时配置fastdfs地址示例如下:
wgms: fdfs: web-url: 127.0.0.1 web-port: 8080 trackerList: ${wgms.fdfs.web-url}:22122
- 1
- 2
- 3
- 4
- 5
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。