WSL、Aanconda、Linux、Torch环境安装配置等

WSL

参考链接

玩转 Windows 自带的 Linux 子系统

win10利用WSL2安装docker的2种方式

WSL安装配置

本地启动WSL功能

  1. win+s,搜索 PowerShell,右键管理员身份运行
  2. 输入命令,启用适用于Linux的Windows子系统功能:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

下载并安装WSL

  1. 选择版本:旧版 WSL 的手动安装步骤 | Microsoft Learn 。或者可以直接在微软商店下载。不过微软商店默认安装在C盘。(自定义WSL的安装位置
  2. 下载完是.appx后缀的文件,将其后缀改成.zip并放到要安装的路径,然后解压。(Windows10/11 三步安装wsl2 Ubuntu20.04(任意盘))(可以从网盘下载:)
  3. 解压完后运行exe文件,即可将WSL安装到当前路径。
  4. 需要注意的是安装目录的磁盘不能开压缩内容以便节省磁盘空间选项,否则会报错。可以右键文件夹-->属性-->常规-->高级找到并关闭这个选项。
  5. 以上几个步骤可以用以下命令来进行(下载好像会比较快):
    1. 下载(下面给的是20.04)
    2. 改后缀
    3. 解压
    4. 安装
Invoke-WebRequest -Uri https://wsldownload.azureedge.net/Ubuntu_2004.2020.424.0_x64.appx -OutFile Ubuntu20.04.appx -UseBasicParsing
Rename-Item .\Ubuntu20.04.appx Ubuntu.zip
Expand-Archive .\Ubuntu.zip -Verbose
cd .\Ubuntu\
.\ubuntu2004.exe

WSL设置

多个版本选择

  1. 查看当前有多少个wsl:wsl -l -v
  2. 进入某个wsl:wsl -d 版本
  3. 查看ubuntu版本:cat /proc/version

WSL设置账号密码

  1. 安装完在命令行直接设置
  2. 有时候错过了,就重新设置一下(Windows下WSL的root密码忘记解决办法
  3. 每次进入root都需要输入密码,可以设置一下某个用户进入不需要密码:sudo echo "damonzheng ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers

WSL路径

  1. windows10 Linux子系统(wsl)文件目录
  2. WSL 1的路径:C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
  3. WSL 2的路径:被映射到\\wsl$。在文件夹上面的搜索栏输入\\wsl$即可

Docker与Anaconda

Docker安装

运行以下命令:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo service docker start

检查docker安装正常:

service docker status
ps aux|grep docker

容器环境配置与制作镜像

正常配置

(1)基础镜像拉取与容器运行

  1. 拉一个镜像(这边从官网拉):docker pull ubuntu(会自动拉取最新的ubuntu,当然也可以指定版本号)
  2. 运行容器:docker run -it --name damonzheng(容器名) ubuntu(镜像名:tag) bash
  3. 安装一些必要的工具:
apt-get update
apt-get install sudo
apt-get install wget
apt-get install vim
apt-get install ssh
apt-get install screen
apt-get install git

(2)Anaconda安装

anaconda官网下载,链接:Free Download | Anaconda

直接复制链接,到Linux中下载即可。注意要把目录切换到/opt中(Linux 软件安装到 /usr,/usr/local/ 还是 /opt 目录?):

wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh

下载太慢的话可以用清华源:清华大学开源软件镜像站

这里是要在容器中配置环境,所以将下载好的anaconda拷贝到docker容器的opt里面再安装(如果是在本地WSL里配环境,那直接在/opt装就行)。拷贝命令:

docker cp /opt/Anaconda3-2023.09-0-Linux-x86_64.sh damonzheng:/opt

开始安装。

sh Anaconda3-2023.09-0-Linux-x86_64.sh

注意:

  1. 一直按enter,其中有一个是否接收license记得输入yes
  2. 安装路径好像不是默认在放Anaconda3-2023.09-0-Linux-x86_64.sh的地方,所以其中还有一步要选择安装路径的,可以用:/opt/anaconda3
  3. 是否初始化也要选yes

如果改变了默认安装路径的话,初始化好像是不会成功的(可以使用/opt/anaconda3/bin/conda init进行初始化),或者自己添加环境变量(Anaconda 多用户共享安装(Ubuntu) ):

  1. 编辑文件:vim ~/.bashrc
  2. 在文件末尾添加:export PATH=/opt/anaconda3/bin:$PATH
  3. 命令行更新一下:source ~/.bashrc

(3)虚拟环境配置

假设要配置一个名为dev的环境,并且在里面安装pytorch

  1. 创建虚拟环境:conda create -n dev python=3.8
  2. 激活环境(最新版的conda好像没有activate,所以只能用source):source activate dev
  3. 安装cpu版本的torch(用清华源):pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple(如果要下载gpu版本的需要用别的命令)

(4)提交容器到镜像

容器提交:docker commit damonzheng damonzheng_image:v1。可以看看docker commitdocker build的区别:docker commit 和docker build

使用Dockerfile配置

上面的流程可以用以下Dockerfile配置(被注释掉的是使用miniconda):docker build -t damonzheng_image:v1 .

一些包提前下载:

  1. anaconda:官网或者清华源
  2. miniconda:官网或者清华源
  3. gdal:anaconda官方库
FROM ubuntu:20.04
LABEL maintainer="damonzheng46@gmail.com" date="20231221"
SHELL ["/bin/bash","-c"]
COPY linux-64_gdal-2.4.4-py38hfe926b7_1.tar.bz2 /tmp
COPY Anaconda3-2023.09-0-Linux-x86_64.sh /tmp
# COPY Miniconda3-py310_23.5.1-0-Linux-x86_64.sh /tmp
RUN \
    # 更换apt源
    cp /etc/apt/sources.list /etc/apt/sources.list.bak \
    && sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list \
    && sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list \
    # 安装一些工具并配置ssh
    && apt-get update \
    && apt-get -y install sudo \
    && apt-get -y install wget \
    && apt-get -y install vim \
    && apt-get -y install screen \
    && apt-get -y install git \
    && DEBIAN_FRONTEND=noninteractive apt-get -y install ssh \
    && apt-get -y install openssh-server \
    && apt-get -y install openssh-client \
    # && sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config \ 
    # && sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config \
    && sed -i '$a\UsePAM no' /etc/ssh/sshd_config \
    && sed -i '$a\PermitRootLogin yes' /etc/ssh/sshd_config 
RUN \
    # 下载安装anaconda并配置虚拟环境
    cd /tmp \
    && sh Anaconda3-2023.09-0-Linux-x86_64.sh -b -p /opt/anaconda3 \
    && /opt/anaconda3/bin/conda init \
    && export PATH="/opt/anaconda3/bin":$PATH \
    && conda create -n dev python=3.8 -y \
    && source activate dev \
    && pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple \
    && pip3 install tqdm yacs opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple \
    && pip3 install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple \
    && conda install linux-64_gdal-2.4.4-py38hfe926b7_1.tar.bz2 \
    && conda install gdal \
    # 清理
    && apt-get clean \
    && rm -rf /tmp/* /var/tmp/*
# RUN \
#     # 下载安装miniconda并配置虚拟环境
#     cd /tmp \
#     && sh Miniconda3-py310_23.5.1-0-Linux-x86_64.sh -b -p /opt/miniconda3 \
#     && /opt/miniconda3/bin/conda init \
#     && export PATH="/opt/miniconda3/bin":$PATH \
#     && conda create -n dev python=3.8 -y \
#     && source activate dev \
#     && pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple \
#     && pip3 install tqdm yacs opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple \
#     && pip3 install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple \
#     && conda install linux-64_gdal-2.4.4-py38hfe926b7_1.tar.bz2 \
#     && conda install gdal \
#     # 清理
#     && apt-get clean \
#     && rm -rf /tmp/* /var/tmp/*

EXPOSE 22

CMD ["/bin/bash"]

上传镜像

可以将镜像传到线上平台,之后换机器就不需要重新配环境,可以直接使用。参考链接:docker使用与镜像提交

“远程”连接相关(重要!)

WSL配置

  1. 查看正在用的端口号,该杀杀:netstat -tanlp
  2. 修改ssh的配置文件(注意端口号,注意看注释):
vim /etc/ssh/sshd_config
#填加以下内容:
Port 20 # 为了给下面的Xshell连接WSL开放
Port 4611 # 为了给下面VSCode连接WSL上的容器开放
PermitRootLogin yes #允许root用户使用ssh登录

LoginGraceTime 120
StrictModes yes
  1. 重启ssh服务,以下都可以:
/etc/init.d/ssh restart
sudo service ssh --full-restart
  1. 添加root密码:passwd

  2. 做连接测试:ssh root@127.0.0.1 -p 端口号

  3. 查看ip:ifconfig

    1. 会有两个ip,都有用
    2. 172.19.2.87:远程连接使用,我的是这个
    3. 127.0.0.1:本地连接使用

容器配置

  1. 从上面构建的镜像或者拉取的镜像启动容器:docker run -it -p 4611:4611/tcp -v /mnt:/mnt --name damonzheng damonzheng_image:v1 bash
    1. -p是端口映射:-p 主机端口:容器端口(上面WSL开放了4611,下面再开放容器的4611,然后在这边做端口映射,下面再配置VSCode就可以通过访问WSL的4611访问到容器的4611从而进入到容器中)
    2. -v是数据卷映射:-v 主机目录:容器目录
    3. 因为WSL2数据默认是/mnt跟windows映射的,所以docker容器映射到linux的/mnt就可以读到windows的磁盘了。这样,数据代码都可以放在本地主机,docker只当环境使用。
  2. 修改ssh的配置文件(注意端口号,注意看注释):
vim /etc/ssh/sshd_config
#填加以下内容:
Port 4611 # 要跟容器启动时开放端口一样
PermitRootLogin yes #允许root用户使用ssh登录
  1. 重启ssh服务:/etc/init.d/ssh restart

  2. 添加root密码:passwd

  3. 做连接测试:ssh root@127.0.0.1 -p 端口号

Xshell连接WSL

配置如下:

主机:172.19.2.87 # 上面ifconfig查到的ip
端口号:20 # WSL配置中开放的端口
用户名:root
密码: # WSL配置中设置的passwd密码

VSCode连接WSL

只要在vscode下载插件wsl,然后把远程资源管理器从远程(隧道/SSH)改成WSL 目标即可。做了数据映射其实没必要连到容器里了,直接连wsl就可以了。

(用ssh配置的办法一直连不上,不知道为什么!谁教教我啊啊啊啊啊!)

VSCode连接WSL里/远程服务器上的docker容器

使用docker容器里的环境和做完数据映射的本地代码数据做开发,可以直接在本地修改代码,在docker运行。但是这样没办法用vscode逐行调试,只能查看log信息调试。

若要用vscode逐行调试,还是需要直接连接到WSL里面的docker容器,直接用容器里面的环境和映射的代码数据。方法如下:

远程资源管理器用远程(隧道/SSH),然后配置C:\Users\用户名\.ssh\config如下:

Host ubuntu2004
    HostName 127.0.0.1 # 上面ifconfig查到的ip
    User root
    Port 4611 # 容器映射出来的端口

有些通过跳板机之类的需要key,大概配置如下:

Host ******
    HostName 192.168.**.**
    User root
    IdentityFile C:\Users\***\.ssh\vscode.key
    ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -W %h:%p jumpserver
    Port 60011

一些问题

  1. WSL起ssh出现问题sshd: no hostkeys available -- exiting参考链接
  2. 连接测试出现问题Permission denied (publickey)参考链接
  3. “设置SSH主机:XXX:正在本地下载VS Code服务器”时间过长:链接1链接2(同时参考!)
  4. VSCode不断要求输入密码:参考链接
  5. 连接测试出问题:假设ssh root@127.0.0.1 -p 20出问题It is also possible that a host key has just been changed..…..那么可以查看文件/root/.ssh/known_hosts,更新里面相应的key,命令如ssh-keygen -R [127.0.0.1]:20
  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

damonzheng46

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值