WSL Ubuntu + Docker Desktop搭建python环境

WSL Ubuntu + Docker Desktop搭建python环境

文章目录

  • WSL Ubuntu + Docker Desktop搭建python环境
    • 一、Window10更新WSL2内核并安装Ubuntu
      • 1、安装步骤
      • 2、迁移WSL ubuntu系统存储位置
      • 3、可能存在问题
    • 二、WSL Ubuntu搭建python环境
      • 1、直接在WSL中安装anaconda(pip无法使用,github上也反馈过了,暂时找不到解决方案,此方案不建议使用)
      • 2、建议安装docker,在docker下安装anaconda
        • 1)安装Docker Desktop
        • 2)Docker Desktop更改镜像存储位置(wsl命令,设置挂载目录)
        • 3)Docker Desktop修改docker源路径
        • 4)实例化anaconda容器

一、Window10更新WSL2内核并安装Ubuntu

什么是WSL?
Windows Subsystem for Linux,适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生虚拟机开销。

什么是WSL2?
WSL 2 是 WSL 中体系结构的新版本,它更改 Linux 发行版与 Windows 交互的方式。
WSL 2 的主要目标是提高文件系统性能并增加系统调用的完全兼容性。
每个 Linux 发行版都可以作为 WSL 1 或 WSL 2 发行版运行,并可随时进行切换
WSL 2 是底层体系结构的主要功能,它使用虚拟化技术和 Linux 内核来实现其新功能。

1、安装步骤

具体步骤是:

  1. 在程序与功能中,开启 linux子系统 和 虚拟机平台,无需开启hyperV。 参考Windows 10安装WSL 2

  2. 到windows应用商店中下载并安装ubuntu 20.04 LTS。

  3. 更新WSL内核组件为WSL2,并将ubuntu切换到WSL2模式。参考WSL2更新内核组件, wsl1与wsl2切换

    wsl --set-version Ubuntu 2
    
  4. 安装window terminal,方便同时打开多个控制台窗口。

2、迁移WSL ubuntu系统存储位置

迁移C盘的ubuntu系统到D盘中,并在D盘中运行ubuntu2004,注意卸载掉原来的ubuntu20.04LTS(点击左下角windows图标,找到ubuntu20.04卸载即可)。参考 【WSL2】迁移Windows虚拟子系统(Ubuntu) , win10 wsl2修改默认安装目录到其他盘

注意先进入迁移文件夹下,再使用ubuntu2004 config --default-user USERNAME安装ubuntu系统到到迁移文件夹

WSL Ubuntu + Docker Desktop搭建python环境_第1张图片

运行如下命令查看迁移盘的ubuntu子系统,并切换到WSL2模式

wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         1

wsl --set-version Ubuntu 2

windows控制台切换到ubuntu控制台

wsl ~ -d Ubuntu

3、可能存在问题

Note

  • 如果切换到WSL2后,ubuntu启动不起来,报4294967295 (0xffffffff)错误,参考https://github.com/microsoft/WSL/issues/5092,即使用如下命令(如果还不能解决,就切换到WSL1吧)

    netsh winsock reset
    
  • 测试一下网络能否ping通,但是报错了

    ping: www.baidu.com: Temporary failure in name resolution
    

​ 解决方法参考https://github.com/microsoft/WSL/issues/5256,如果解决不了就切换到WSL1吧,等到需要用到GPU资源,再切换到WSL2吧

二、WSL Ubuntu搭建python环境

Note

使用WSL有以下两点建议:

  • WSL ubuntu20.04版本和原生的ubuntu20.04版本是不同的,所以在使用时难免会出现在同样操作下,WSL ubuntu20.04和原生ubuntu20.04出错信息不同的问题。建议不要在WSL ubuntu子系统中直接安装anaconda,后面可能会出现pip无法使用的问题。
  • 建议先在Windows中安装docker desktop,再安装anaconda,即建议使用WSL + docker解决方案,不要直接在WSL中直接安装anaconda

1、直接在WSL中安装anaconda(pip无法使用,github上也反馈过了,暂时找不到解决方案,此方案不建议使用)

安装anaconda:清华anaconda镜像

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.11-Linux-x86_64.sh

进入指定文件夹后,

bash Anaconda3-2021.11-Linux-x86_64.sh

配置conda文件路径

echo 'export PATH="/home/wangxiaoxi/anaconda3/bin"' >> ~/.bashrc
source ~/.bashrc

#上面命令可能会把WSL文件弄坏,导致ls,cd基本命令无法使用,使用如下命令修复
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin 

查看conda是否配置成功

conda -V
  • 修改conda源,参考 ubuntu更换conda源
  • 修改apt源,参考 Ubuntu 更改apt 源
  • Windows10本地磁盘挂载到ubuntu的/mnt文件夹下: 将Windows系统中文件传入WSL子系统中

存在问题1:WSL ubuntu中无法使用pip

WSL Ubuntu + Docker Desktop搭建python环境_第2张图片

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f6e6eea04c0>: Failed to establish a new connection: [Errno -2] Name or service not known')': /simple/numpy/

解决方法参考https://github.com/microsoft/WSL/issues/4020,https://github.com/MicrosoftDocs/windows-uwp/issues/2679,发现还是无法解决。

2、建议安装docker,在docker下安装anaconda

Note

安装Docker Desktop,利用docker安装anaconda镜像(镜像中包含ubuntu文件系统,建议不要在anaconda中创建虚拟环境,直接在base下安装,之后在将anaconda运行时容器打包成镜像时,pycharm才能识别镜像中的base环境,此方案建议使用)

1)安装Docker Desktop

使用如下命令在WSL ubuntu中安装docker时,提示先安装Docker Desktop

WSL Ubuntu + Docker Desktop搭建python环境_第3张图片

Docker Desktop安装步骤参考:Docker Desktop for Windows 安装步骤(这里需要开启HyperV)

Docker Desktop默认安装在C盘,如果要更改安装路径,可参考: docker desktop 更改安装目录,这里就不修改了。

Docker Desktop安装成功后,先将ubuntu切换到WSL2:

NAME                   STATE           VERSION
* Ubuntu                 Stopped         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2

接着设置Docker Desktop,将docker集成到ubuntu中,这时ubuntu就可以直接使用docker命令了,无需安装sudo apt install docker

2)Docker Desktop更改镜像存储位置(wsl命令,设置挂载目录)

参考 Docker Desktop更改镜像存储位置

Note

Docker Desktop修改镜像存储位置的方法 和 ubuntu修改存储位置相同,都要使用wsl命令

Docker Desktop 通过WSL2启动,会自动创建2个子系统,分别对应2个 vhdx 硬盘映像文件:

NAME                   STATE           VERSION
* Ubuntu                 Stopped         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
  1. 在Docker Desktop图标上,右键选择[Quit Docker Desktop],退出Docker。

  2. 命令行执行 wsl --list -v 查看状态STATE,是否已停止Stopped。

  3. 命令行执行 wsl --shutdown ,关闭WSL。

  4. 从 wsl 把镜像 \data\ext4.vhdx 导出到压缩文件 docker-desktop-data.tar,导出路径应提前创建好,否则导出到不存在的路径会报错。命令行执行:

    wsl --export docker-desktop-data D:\programSoftware\docker\docker_desktop_data\docker-desktop-data.tar
    

    同理,导出把程序 \distro\ext4.vhdx 导出到压缩文件 docker-desktop.tar,命令行执行

    wsl --export docker-desktop D:\programSoftware\docker\docker_desktop\docker-desktop.tar
    
  5. 命令行执行 wsl --unregister docker-desktop-data注销原来的 Docker 镜像。同理,执行 wsl --unregister docker-desktop

  6. 从tar文件,将导出的 Docker 镜像再导入回wsl,并设置挂载目录,命令行导入格式:

    wsl --import <Distribution Name> <InstallLocation> <FileName>
    

    如:

    wsl --import docker-desktop-data D:\programSoftware\docker\wsl\data\  D:\programSoftware\docker\docker_desktop_data\docker-desktop-data.tar
    wsl --import docker-desktop D:\programSoftware\docker\wsl\distro\  D:\programSoftware\docker\docker_desktop\docker-desktop.tar
    
  7. 将docker-desktop-data,docker-desktop设置为WSL2

    wsl --set-version docker-desktop 2
    wsl --set-version docker-desktop-data 2
    
  8. 重启windows系统,重新启动 Docker Desktop 完成。

3)Docker Desktop修改docker源路径

WSL Ubuntu + Docker Desktop搭建python环境_第4张图片

{
  "debug": true,
  "experimental": false,
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ]
}

4)实例化anaconda容器

在完成好WSL和Docker Desktop安装之后,基于深度学习的anaconda环境配置步骤如下:

  1. 实例化anaconda容器

    docker run -it --name="anaconda" -p 8888:8888 continuumio/anaconda3 /bin/bash
    

    如果退出了,可以重启anaconda容器

    #重启
    docker start anaconda
    docker exec -it anaconda /bin/bash
    
  2. base环境下配置wenet环境(不要创建虚拟环境,方便之后打包成镜像,供pycharm使用

    将WSL中的wenet项目拷贝到docker容器中(假设在WSL的/home/usr下有wenet项目)

    docker cp /home/usr/wenet/requirements.txt 9cf7b3c196f3:/home/  #9cf7b3c196f3为anaconda容器id
    

    进入anaconda容器内,在/home/使用pip安装所有包(conda源修改参考 ubuntu更换conda源 )

    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    conda install pytorch=1.10.0 torchvision torchaudio=0.10.0 cudatoolkit=11.1 -c pytorch -c conda-forge
    

你可能感兴趣的:(硬件,运维,#,docker,ubuntu,docker,python)