宿主机:Windows 10 教育版
docker版本 :Docker Desktop V4.1.1
wsl2安装
-
确认cpu开启虚拟化。
-
启用 WSL
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
-
启用“虚拟机平台,后重启系统。
要在 Windows 10(2004)上启用虚拟机平台,请以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
要在 Windows 10(1903,1909)上启用虚拟机平台,请以管理员身份打开 PowerShell 并运行:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
-
设置 WSL 2 为默认值
win10默认是wsl1,所以请用管理员身份运行的Windows PowerShell里执行一下。wsl --set-default-version 2
至此,WSL 2环境我已经全部准备完毕!
WSL2安装Ubuntu
-
通过下方的链接下载一个发行版本的Ubuntu。
https://store.rg-adguard.net/
-
搜索框中输入下方的链接,搜索Ubuntu20.04LTS
https://apps.microsoft.com/detail/9MTTCL66CPXJ?ocid=pdpshare&hl=en-us&gl=US
-
我们修改文件后缀名
原本文件名:
CanonicalGroupLimited.Ubuntu20.04LTS_2004.6.16.0_neutral_~_79rhkp1fndgsc.AppxBundle
修改为 :
CanonicalGroupLimited.Ubuntu20.04LTS_2004.6.16.0_neutral_~_79rhkp1fndgsc.zip -
解压 CanonicalGroupLimited.Ubuntu20.04LTS_2004.6.16.0_neutral_~_79rhkp1fndgsc.zip
我们选择 Ubuntu_2004.6.16.0_x64.appx 将其改为 Ubuntu_2004.6.16.0_x64.zip
其他无用的可以删除了 -
解压此压缩包Ubuntu_2004.6.16.0_x64.zip,打开此文件夹右键管理员运行 Ubuntu2004.exe,Ubuntu20.04LTS会安装在当前路径下,等待Ubuntu20.04LTS安装完成。
输入用户名和密码(不可设定用户名为root,因为root这个用户已经默认存在)
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: xx
New password:
Retype new password:
passwd: password updated successfully
查看安装的ubuntu
C:\Users\xx>wsl --list
适用于 Linux 的 Windows 子系统分发:
Ubuntu-20.04 (默认)
-
设置默认运行的 Linux 版本
我们打开 PowerShell 在命令框输入以下命令:wsl --set-default Ubuntu-20.04
-
设定读写权限
Windows直接访问WSL2路径并直接进行读写操作操作会出现权限不足拒绝的情况,我们之后编译SDK需要往WSL2路径下放置SDK包,所以一定要有权限访问WSL2目录。重庆让配置生效
我们打开PowerShell 输入以下命令(默认登录用户为root):F:\xxxx\ubuntu2004.exe config --default-user root
-
运行Ubuntu
双击ubuntu2004.exe,即可运行Ubuntu
启ssh服务
首先确保是root用户
vi /etc/ssh/sshd_config
/******************************/
PermitRootLogin yes #把上面那行相同的注释掉,新加一行,允许root账户登录
PasswordAuthentication yes #允许使用密码登录
#PermitEmptyPasswords no
/******************************/
sudo service ssh restart
ssh服务不会自动开启
解决思路:
重启ssh服务的命令,根据需要修改参数哦,可以写个cmd脚本放在windows自启动文件夹中,开机自己运行就不用每次输入了
C:\Users\用户名\AppData\Local\Microsoft\WindowsApps\ubuntu2004.exe run "sudo service ssh restart"
win10 和 Linux文件交互
文件资源管理器重输入,
\\wsl$
ubuntu 安装docker
卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
使用存储库安装更新 apt 包索引并安装相关软件包以允许 apt 通过 HTTPS 使用 docker 存储库:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
添加 Docker 的官方 GPG 密钥:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
设置存储库:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee -a /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker engine
snap install docker
验证安装完成
docker -v
/*********************/
Docker version 24.0.2, build cb74dfc
构建镜像并运行容器
编辑dockerfile
# 设置基础镜像为Ubuntu 18.04
FROM ubuntu:18.04
# 设置作者信息
MAINTAINER li "service@li.com"
# 设置环境变量,用于非交互式安装
ENV DEBIAN_FRONTEND=noninteractive
# 备份源列表文件
RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
# 将源列表中的 http://.*ubuntu.com 替换为 http://repo.huaweicloud.com
RUN sed -i 's@http://.*ubuntu.com@http://repo.huaweicloud.com@g' /etc/apt/sources.list
# 更新包列表
RUN apt update
# 安装基本的编译工具和依赖
RUN apt install -y build-essential crossbuild-essential-arm64 \
bash-completion vim sudo locales time rsync bc python
RUN apt install -y bear
# 再次更新包列表并安装任何未安装的依赖
RUN apt update && apt install -y -f
# 生成本地化语言支持
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
# 创建用户
RUN useradd -c 'xx user' -m -d /home/xx -s /bin/bash xx
# sudo免密登录
RUN sed -i -e '/\%sudo/ c \%sudo ALL=(ALL) NOPASSWD: ALL' /etc/sudoers
RUN usermod -a -G sudo xx
USER xx
#设置docker工作目录为/home/xx
WORKDIR /home/xx
构建镜像
docbuild -t qemu .
此过程需要一段时间,请耐心等待
创建并运行容器
/home/xx/docker# er# docrun --privileged --mount type=bind,source=//home/xx/qemu,target=//home/xx/qemu --name="qemu" -h ubuntu -it qemu
docker ps -a | 罗列 所有的容器 |
#docker start | 启动容器 |
#docker attach | 连接运行状态容器 |
#docker stop | 停止容器 |
#doecker restart | 重启容器 |
$exit | 退出容器 |
docker images | 查看镜像 |
VScode 管理doecker
vscode上安装docker插件。用与启动,停止容器。实际就是将docker的命令菜单化。
vscode上安装Dev Containers插件,远程登陆vscode。
- 使用方法docke运行后,在vscode中ctrl+shift+p,出现命令行,之后attach to running container。