首页 > 编程语言 >使用矩池云 Docker 虚拟机安装VNC、Conda、Python及CUDA

使用矩池云 Docker 虚拟机安装VNC、Conda、Python及CUDA

时间:2024-02-28 13:48:48浏览次数:39  
标签:bin vnc Python 虚拟机 usr && VNC root

矩池云虚拟机支持 Docker 使用,但是由于虚拟机目前不支持启动时传递环境变量来设置VNC、Jupyterlab 连接密码,所以我们没有创建相关基础镜像(设置固定密码容易泄漏),下面给大家介绍手动安装使用 VNC、Jupyterlab、CUDA等步骤,以便支持使用 OpenGL 等功能的使用,开启更完善和强大的功能体系。

租用机器

主机市场 https://matpool.com/host-market/gpu 点击如下按钮筛选支持 Docker 机器。

选择一个机器进行租用。在这里我们选择 Ubuntu 20.04 Docker 镜像,并在高级选项自定义两个端口,一个 ssh 类型的 5901 端口(用于 vnc 连接使用),一个 http 类型的 8888 端口(用于 jupyterlab 服务使用),然后点击租用按钮。

租用成功后,点击 SSH tab 下的点击复制按钮复制 SSH 命令,

本地新建一个 Terminal/CMD/Powershell 依次输入上面复制的 SSH 命令和 SSH 密码连接服务器。

安装配置 VNC 软件

VNC 安装配置流程比较复杂,已经给大家整理成一个一键安装脚本了,内容如下。

首先服务器内使用 sudo su 指令切换到 root 帐号(密码就是租用页面 mat 密码),然后使用 vim 创建一个 vnc_install.sh,并粘贴下面脚本内容,然后使用 bash 指令运行即可。

#! /bin/bash

set -e

# 1、安装vnc软件包
apt-get update && apt-get install -y libxfont-dev libfreetype6-dev dbus-x11 x11-xserver-utils && \
apt-get install -y tigervnc-standalone-server tigervnc-common tigervnc-xorg-extension && \
apt-get purge -y light-locker 

# 2、配置 vnc
mkdir -p /root/Desktop /root/.vnc /root/vnc /root/.config/xfce4 && \
# 设置vnc启动脚本
echo '#!/bin/sh
PATH=/usr/bin:/usr/sbin:$PATH
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

exec /usr/bin/xfce4-session' > /root/.vnc/xstartup

echo '#!/usr/bin/env bash
export PATH=$PATH:/root/miniconda3/bin:/usr/local/cuda/bin

set -e
mkdir -p "$HOME/.vnc"
PASSWD_PATH="$HOME/.vnc/passwd"

if [[ -f $PASSWD_PATH ]]; then
    rm -f $PASSWD_PATH
fi

printf "${VNC_PASSWD}\n${VNC_PASSWD}\n\n" | vncpasswd -f >> $PASSWD_PATH

chmod 600 $PASSWD_PATH

vncserver -kill $DISPLAY &> /root/.vnc/vnc_startup.log \
    || rm -rfv /tmp/.X*-lock /tmp/.X11-unix &> /root/.vnc/vnc_startup.log \
    || echo "no locks present"

vncserver :1 -depth 24 -localhost no -geometry 1280x1024 &> /root/.vnc/no_vnc_startup.log' > /usr/bin/vnc_startup.sh
chmod +x /usr/bin/vnc_startup.sh
ln -s /usr/bin/vnc_startup.sh /root/vnc/vnc_startup.sh 

# 添加vnc桌面快捷方式
# Terminal
echo '[Desktop Entry]
Version=1.0
Type=Application
Name=Terminal
Comment=Terminal Emulator
Exec=xfce4-terminal
Icon=utilities-terminal
Path=
Terminal=false
StartupNotify=false' > /root/Desktop/terminal.desktop
# firefox
echo '[Desktop Entry]
Encoding=UTF-8
Name=firefox
Comment=firefox
Exec=/usr/bin/firefox
Icon=/usr/lib/firefox/browser/chrome/icons/default/default128.png
Terminal=false
Type=Application
StartupNotify=true
Categories=Application;Development;' > /root/Desktop/firefox.desktop

# 网盘
ln -s "/mnt/" "/root/Desktop/我的网盘"
chmod +x /root/Desktop/*.desktop
ln -sf /bin/sh /bin/bash
echo "TerminalEmulator=xfce4-terminal" > /root/.config/xfce4/helpers.rc

设置 VNC 开机自启

为了方便下次使用,我们可以使用 systemctl 将 vncserver 设置成开机自启服务,脚本如下,在服务器vim创建一个 vnc_enable.sh 脚本,将下面内容复制粘贴到文件,然后使用bash指令运行即可完成设置比开启 vncserver。注意将 VNC_PASSWD= 后,设置个复杂的密码。

#! /bin/bash

set -e

# 创建 vncserver systemctl 启动脚本
echo '[Unit]
Description=Start VNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=root
Group=root
WorkingDirectory=/root
Environment="VNC_PASSWD=设置一个复杂点的密码"
ExecStart=/root/vnc/vnc_startup.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target' > /etc/systemd/system/vncserver.service

# 使用systemctl设置 vncserver 开机自启
sudo systemctl enable vncserver
sudo systemctl daemon-reload

# 启动 vncserver
sudo systemctl start vncserver

登录 VNC

前面已经配置并启动了 VNC 服务,VNC 登录链接就是我们租用页面 5901 端口的 Host:Port,如下图VNC链接就是:hz-t2.matpool.com:26318

VNC 密码是你在 vnc_enable.sh 脚本中设置的密码,请设置一个复杂点的密码,避免被盗用

登录后即可正常使用啦~

安装相关组件,查看显卡驱动里 OpenGL 版本。

apt install mesa-utils -y
glxinfo | grep "OpenGL version"

安装 Miniconda 和 CUDA

除了 VNC 常用的 Conda、CUDA 和 Jupyterlab 也给大家整理了安装脚本,内容如下。

首先使用 vim 创建一个 conda_install.sh,并粘贴下面脚本内容,然后使用 bash 指令运行即可。

#! /bin/bash

set -e

# 安装 miniconda3 jupyterlab 创建虚拟环境
CONDA_ENV_NAME=myconda
PYTHON_VERSION=3.10
CONDA=/root/miniconda3.sh; \
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_23.11.0-2-Linux-x86_64.sh -O $CONDA && \
chmod +x $CONDA && $CONDA -b && /root/miniconda3/bin/conda init bash && /root/miniconda3/bin/conda clean -ya
/root/miniconda3/bin/python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
/root/miniconda3/bin/python -m pip install --no-cache-dir jupyterlab && \
/root/miniconda3/bin/conda create -n $CONDA_ENV_NAME python=$PYTHON_VERSION -y && \
/root/miniconda3/envs/$CONDA_ENV_NAME/bin/python -m pip install ipykernel && \
/root/miniconda3/envs/$CONDA_ENV_NAME/bin/python -m ipykernel install --user --name ${CONDA_ENV_NAME} --display-name ${CONDA_ENV_NAME}
rm $CONDA

# 设置环境变量
echo 'export PATH=$PATH:/root/miniconda3/bin:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64/:/usr/lib/x86_64-linux-gnu
source activate myconda' >> /root/.bashrc

Conda 和 CUDA 可以同步安装,具体方式是在 VNC 里在新建一个Terminal ,vim 创建一个 cuda_install.sh,并粘贴下面脚本内容,然后使用 bash 指令运行即可。(以下为安装 CUDA11.3 和 CUDNN 8.2 脚本,其他版本指令安装可以浏览器搜索相关安装指令,如有问题也可以联系矩池云小助手)

#! /bin/bash

set -e

# 安装 CUDA 11.3
curl -fsSL https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64/3bf863cc.pub | apt-key add - && echo "deb https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64/ /" > /etc/apt/sources.list.d/cuda.list

apt-get update && apt-get install -y --no-install-recommends libtinfo5 libncursesw5         cuda-cudart-dev-11-3=11.3.109-1 cuda-command-line-tools-11-3="11.3.1-1" cuda-minimal-build-11-3="11.3.1-1" cuda-libraries-dev-11-3="11.3.1-1" cuda-nvml-dev-11-3=11.3.58-1         cuda-nvprof-11-3=11.3.111-1 libnpp-dev-11-3=11.3.3.95-1 libcusparse-dev-11-3=11.6.0.109-1 libcublas-dev-11-3=11.5.1.109-1 cuda-nsight-compute-11-3=11.3.0-1

# 安装 CUDNN
apt-get update && apt-get install -y --no-install-recommends "libcudnn8=8.2.0.53-1+cuda11.3" "libcudnn8-dev=8.2.0.53-1+cuda11.3" && apt-mark hold "libcudnn8" 
rm -rf /var/lib/apt/lists/*

安装完成后输入source /root/.bashrc即可加载最新安装的 conda 环境了。

Terminal 中输入以下指令启动 jupyterlab,注意:需要自己设置下 ${YOUR_TOKEN},可以设置一个相对复杂的,避免泄漏

nohup jupyter lab --notebook-dir=/ --allow-root --no-browser --NotebookApp.token=${YOUR_TOKEN} --ip=0.0.0.0 &

在VNC浏览器里输入127.0.0.1:8888后,输入自己设置 token 即可访问。

或者自己电脑浏览器访问租用页面 Jupyterlab 链接,输入 token 后也可以访问。

保存环境

配置好所有环境后,可以租用页面点击更多-->保存到个人环境,这样下次租用就不用重复配置了。

从保存环境启动机器

再次租用的时候,从主机市场选择需要的机器,点击租用按钮,然后选择我的环境下自己保存的环境启动机器即可。

标签:bin,vnc,Python,虚拟机,usr,&&,VNC,root
From: https://www.cnblogs.com/matpool/p/18040111

相关文章

  • python基础-函数
    一、参数示例deffun(a,b=0,*args,**kwargs):"""指定收集参数的固定形式,*+指定的位置参数名,惯例*args,自定义*position都行,**+指定的关键字参数名,惯例**kwargs,需要注意的是,在函数体内调用时不要混淆*的含义,*+数据序列,指展开序列,取其中的值,而想使用传入的......
  • Python面向对象,类属性,实例属性,类方法,实例方法,静态方法的区别及用法详解
    一.前言在Python的面向对象编程中,类属性和实例属性是两个不同的概念,它们在作用域和使用方式上有所区别。在Python中的面向对象编程中有三种方法:实例方法、类方法和静态方法,它们之间的差异主要体现在参数传递和调用方式上。二.面向对象-类属性和实例属性1.区别在Pyth......
  • Python: Star unpacking expressions in for statements
    今天发现在Python3.11版本中一个很不错的新特性,可以在for循环中使用unpacking,这意味着可以更灵活地组合迭代对象。ls=[1,2,34]foriin1,2,3,*ls,789:print(i)"""1231234789"""其实我第一次知道for循环中可以使用x,y,z这样的结构,想想也是......
  • Python语言Numpy包之Meshgrid 函数
    Meshgrid函数的基本用法在Numpy的官方文章里,meshgrid函数的英文描述也显得文绉绉的,理解起来有些难度。可以这么理解,meshgrid函数用两个坐标轴上的点在平面上画网格。用法:[X,Y]=meshgrid(x,y)[X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的[X,Y,Z]......
  • Python scipy.ndimage.find_objects用法及代码示例
    用法scipy.ndimage.find_objects(input,max_label=0)在标记数组中查找对象。参数:input:整数数组包含由不同标签定义的对象的数组。值为0的标签将被忽略。max_label:整数,可选要在输入中搜索的最大标签。如果没有给出max_label,则返回所有对象的位置。object_slices:元组......
  • 基于Python GDAL为长时间序列遥感图像绘制时相变化曲线图
      本文介绍基于Python中gdal模块,对大量多时相栅格图像,批量绘制像元时间序列折线图的方法。  首先,明确一下本文需要实现的需求:现有三个文件夹,其中第一个文件夹存放了某一研究区域原始的多时相栅格遥感影像数据(每一景遥感影像对应一个时相,文件夹中有多景遥感影像),每一景遥感影像......
  • python-获取当前目录路径的几个方法
     1、fromos.pathimportabspath,dirnameprint(abspath(__file__))__file__ 是一个特殊的变量,它表示当前脚本的文件名(带有路径)。abspath() 是一个函数,它返回指定文件或目录的绝对路径。因此,这行代码将打印出当前脚本的绝对路径。print(dirname(abspath(__file__)......
  • Python函数每日一讲 - 一文让你彻底明白hasattr函数的使用
    引言在Python编程中,经常会遇到需要判断对象是否具有某个属性的情况。这时候就可以用到Python内置函数hasattr()。本文将深入探讨hasattr()函数的使用方法及其在实际编程中的应用。语句概览hasattr()函数用于检查对象是否具有指定的属性,返回一个布尔值。其语法如下:hasattr(......
  • 学习python自动化——Jenkins
    一、Jenkins概念持续集成,就是CI;持续交付,就是CDjenkins自动编译打包、自动部署二、持续集成的好处1.解放了重复性劳动2.更快的修复问题3.更快的交付成果4.减少手工的错误,人和机器最大的区别就是重复性动作上,人容易犯错,而机器错的几率几乎为零,所以在我们搭建完成集成服务器后......
  • 学习python自动化——pytest+allure+jenkins持续集成平台生成allure报告
    一、安装allure命令行工具具体安装过程查看:学习python自动化——pytest单元测试框架的2.4.4、生成allure的测试文件二、allure与pytest的集成在allure安装完成之后,需要与pytest集成,能够在pytest运行完成之后,生成allure的文件。1、安装pytest的allure支撑插件pipinstal......