目录

WSL在经过一段时间的发展后,已经具备了一定的可用性。相对VMWare来说,有性能和易用性上的优点。

谨慎使用,WSL2仍然不够稳定。

基础搭建

  1. 基本步骤:
    1. 在“启用或关闭Windows功能”中,打开虚拟机平台、Linux子系统两个选项即可。
    2. 重启
    3. 不想安装在C盘,可以参考旧版 WSL 的手动安装步骤,更新内核,下载所需镜像,移动到喜欢的路径下,更改后缀名(从AppxBundle到zip),解压缩并运行其中的ubuntu.exe,此后Linux将存储在exe同级位置
    4. 安装过程中可能遇到问题,参考
  2. 注意事项
    1. 安装后,WSL2会在Windows内创建一个ext4.vhdx文件,作为提供给Linux使用的虚拟磁盘,磁盘内存放所有Linux文件(根目录)
    2. ext4.vhdx可能会被Windows磁盘管理识别并挂载,此时将无法启动子系统,需要去磁盘管理中分离该VHD

开发环境

基本开发

  1. 更好用的命令行:推荐安装微软的全新终端
  2. docker:查看参考中的相关链接。可能会遇到的问题
    1. 图形界面创建可能有问题,建议还是在命令行里用docker run
    2. ubuntu22.04官方镜像无法进行apt-get update宿主机一侧的网桥并没有工作

      尚未有结论,但是看起来wsl中的docker工作方式略有不同,其网桥无法通过brctlip addr观测到,可以用docker network ls看一下,参考

    3. 在尝试安装elasticsearch的过程中,使用图形化界面绑定端口,发现该端口是容器映射到wsl2,需要在做一步从wsl2映射到windows,参考,powershell执行如下指令
      # 先查看wsl的地址
      wsl -- ifconfig
      # listenXXX是windows侧,connectXXX是wsl侧
      netsh interface portproxy add v4tov4 listenport=7777 listenaddress=0.0.0.0 connectport=7777 connectaddress=172.22.153.228
      # 查看映射配置
      netsh interface portproxy show all
      

ElasticSearch

参考命令来源,主要需要考虑将ElasticSearch和Kibana连接起来

# wsl2内
docker network create es-stack-network
# 根据你所使用的版本
docker run -d --name elasticsearchdb --net es-stack-network -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.11.3

docker run -d --name kibana-es-ui --net es-stack-network -e "ELASTICSEARCH_URL=http://elasticsearchdb:9200"  -p 5601:5601 kibana:8.11.3

# ====== windows ======
netsh interface portproxy add v4tov4 listenport=5601 listenaddress=0.0.0.0 connectport=5601 connectaddress=172.22.153.228

注意

  1. 初次启动需要进行一次token的验证,先去es下的bin中生成,再去kibana下查看验证码。
  2. 初次启动kibana需要密码,也可以从es下的bin重置
  3. 非初次启动记得先启动ES,确定ES日志中显示OK,再启动Kibana。否则Kibana会永远显示ES Server未就绪。

Hadoop

docker desktop内提供的镜像都不太好。推荐参考big-data-europe。直接使用一个完整的hadoop环境的docker compose构建。docker desktop目前已经继承了docker compose,所以可以直接使用docker-compose.yml。下面是对该教程的指令总结

git clone 

# 核心就是一句话
docker-compose up -d

# 可以看到hadoop已经启动
curl http://localhost:9870/

# 另外该例子还提供了一个简单的MapReduce程序供测试
# 在wsl2主机侧下载并拷贝给namenode
wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-mapreduce-examples/2.7.1/hadoop-mapreduce-examples-2.7.1-sources.jar
docker cp ./hadoop-mapreduce-examples-2.7.1-sources.jar namenode:/tmp

# 先进入到namenode节点,后文均位于namenode下
docker exec -it namenode bash
cd /tmp
mkdir input
# 准备两个文件
echo "Hello World" >input/f1.txt
echo "Hello Docker" >input/f2.txt
# 创建hdfs文件夹,名为input
hadoop fs -mkdir -p input
# 将当前的input文件夹拷贝过去
hdfs dfs -put ./input/* input

# 执行hadoop,mapreduce任务
hadoop jar hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount input output
# 查看结果
hdfs dfs -cat output/part-r-00000

交叉编译

显卡

  1. Windows下,WSL2内的Ubuntu容器无法访问外网,仍未解决

参考

  1. 官方文档目录:适用于 Linux 的 Windows 子系统文档
  2. 安装并开始设置 Windows 终端
  3. WSL 2 上的 Docker 远程容器入门
  4. Docker Desktop WSL 2 backend on Windows