1.起因
之前一直使用VMware的方式安装虚拟机,但是其实只是用来充当编译服务而已。vmware虚拟机造成了大量的磁盘空间浪费。
docker容器化的方式,可以轻量化的运行,存储空间需求少、分发部署。
WSL+vscode可以在本机windows上就可以建立linux开发环境,代码编辑,编译、版本管理集成度高。
环境:
版本 Windows 11 家庭中文版
版本号 23H2
安装日期 2023/7/19
操作系统版本 22631.4602
2.处理过程
2.1 加载镜像与安装开发环境
anolis官网上可以找到各个版本的系统镜像。
#下载镜像文件
$ wget https://mirrors.openanolis.cn/anolis/8.9/isos/GA/x86_64/AnolisOS-8.9-x86_64-docker.tar
#load tar文件
$ docker load -i AnolisOS-8.9-x86_64-docker.tar
d6975534fca8: Loading layer [==================================================>] 220.5MB/220.5MB
f6a35d1ab41c: Loading layer [==================================================>] 3.072kB/3.072kB
Loaded image: openanolis/anolisos:8.9-x86_64
#查看当前的镜像文件
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
openanolis/anolisos 8.9-x86_64 3030d3534152 8 months ago 214MB
#启动容器
$ docker run -it --name openanolis-8.9 openanolis/anolisos:8.9-x86_64 /bin/bash
#安装开发工具套件
[root@7722c09f26c2 /]$ yum groupinstall "Development Tools" -y
#单独安装g++用这个指令
[root@7722c09f26c2 /]$ sudo yum install gcc-c++ -y
#查看g++版本跟vmware虚拟机上装的一样。看来每个发行版的g++默认安装开发环境版本是固定的。
[root@7722c09f26c2 /]# g++ --version
g++ (GCC) 8.5.0 20210514 (Anolis 8.5.0-22.0.1)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#exit 或者 ctrl+D 终止容器,退出
[root@7722c09f26c2 /]$ exit
2.2 导入WSL
之前用WSL+vscode的开发方式比较顺手。其实直接用容器的方式应该也行,暂时没有去探索。
从shell中导出container的tar文件:
#看下容器列表
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7722c09f26c2 openanolis/anolisos:8.9-x86_64 "/bin/bash" 4 hours ago Exited (130) 2 hours ago openanolis-8.9
#导出容器的tar文件
$ docker export openanolis-8.9 > openanolis-8.9.tar
windows 的powershell中导入到wsl
#wsl --import wsl中虚拟机名称 tar文件路径
PS > wsl --import openanolis-8.9 D:\path\to\openanolis-8.9.tar
正在导入,这可能需要几分钟时间。
操作成功完成。
#查看安装的发行版
PS > wsl -l
适用于 Linux 的 Windows 子系统分发:
Ubuntu-20.04 (默认)
Ubuntu
centos-8
openanolis-8.9
#删除wsl中的虚拟机
PS > wsl --unregister 虚拟机名称
进入 wsl 中的 openanolis-8.9 验证:
$ g++ --version
g++ (GCC) 8.5.0 20210514 (Anolis 8.5.0-22.0.1)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
3.问题与解决
问题1:在尝试将anolis-8.9的docker镜像运行起来时,失败,报错:
$ wget https://mirrors.openanolis.cn/anolis/8.9/isos/GA/x86_64/AnolisOS-8.9-x86_64-docker.tar
$ docker import AnolisOS-8.9-x86_64-docker.tar anolis:8.9
$ docker run -i --name anolis-8.9 --rm anolisos:8.9 ls /
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown.
原因:导入镜像这个文件 import 是不行的,需要用load。执行的时候也没有报错后面run的时候就各种错误了。
$ docker load -i AnolisOS-8.9-x86_64-docker.tar
anx.资料补充
[1] wsl的安装可以看官方网站:Install WSL | Microsoft Learn
[2] 其它linux发行版的导入可以看这个:Import any Linux distribution to use with WSL | Microsoft Learn