记录:

  1. 实验室来了一台新的服务器,需要为该服务器安装Ubuntu Server。
  2. 安装完系统后,为了实验室每个人在上面跑实验能做到环境不冲突,并且为了数据的安全,故在服务器上面搭建docker,并通过一些自动化脚本管理docker的使用。
  3. 最后为了让校外的人员可以访问到该服务器,通过frp工具来对服务器进行内网穿透。

步骤

配置Ubuntu Server

Ubuntu Server的安装

  1. 镜像下载
    下载地址:
    官网

  2. 制作启动盘
    这里我用的软碟
    软碟通
    下载后直接将下载好的镜像拷进准备好的U盘即可即可,这里不做详细介绍,具体参考:
    制作启动盘

  3. 安装系统
    1、将U盘插进服务器,按F11进入BIOS MENU,用进入U盘启动程序。
    2、接下来的操作都是比较固定化的,可以参考下面博客,有详细介绍系统的安装
    安装系统步骤
    这里主要介绍下安装过程中遇到的一些问题
    在这里插入图片描述
    问题:安装的这个步骤一直卡在0%,且页面一直闪烁。
    解决:安装的镜像有问题或者启动盘的制作有问题,下载了新的镜像后解决.


在这里插入图片描述
问题:安装完成后系统重启,进入rescue模式。grub是linux的引导文件,证明该文件出问题了,导致服务器进入不了系统。

解决:折腾了好一阵子才解决,重装了两次系统。后面发现是U盘拔的太快了。安装的时候不要被下面的指示误导,这里不需要拔U盘,等系统装好重启后进入Ubuntu后再拔U盘。
在这里插入图片描述

进入系统后配置网络

1、注意验证自己用的网线是否可以上网,若可以上网,一般的网口处是会亮绿灯的。
也可以通过下面的命令查看网口处是否正常通网:

ifconfig # 查看自己的网络设备名称
ip -a # 查看该网络设备是否工作,若正常工作,该设备会有UP的状态,如下图红色框处。

在这里插入图片描述

2、配置DHCP动态获取ip地址

cd /etc/netplan
# 这个目录下面有.yaml文件,这个是网络的配置文件
vim xx.yaml

将yaml文件的内容改成如下:ethernets是你的网卡名称,不同机器不一样。
可以通过ifconfig查看。dhcp6是为了动态获取v6地址,如果没有v6地址的可以不填。
在这里插入图片描述
3、配置完成后,执行下面语句更新网络服务:

sudo netplan apply 

若想配置静态的地址,可以参考:
配置静态ip

磁盘分区

一般在安装系统的步骤中,只挂载了固态硬盘sda,将其挂载在/boot启动文件目录和/跟目录。下面讲一下挂载机械硬盘的步骤和需要用到的命令:

查看服务器磁盘分区情况

lsblk # 查看服务器的硬盘情况

在这里插入图片描述
NAME是设备名,根据type可以分为disk(磁盘)和part(分区)
MOUNTPOINT是挂载点

查看已挂载好的分区

df -h

在这里插入图片描述
df- h与命令lsblk的区别在于df -h只能查看已经挂载好的分区

将空分区挂载到某文件目录下,并设置开机启动自动挂载(这里用/dev/sdb作为例子):

1、先配置好开机定时挂载的文件:

vim /etc/fstab

在命令行模式获取想要挂载分区的uuid。uuid是每个分区的唯一标识符,利用uuid来配置而不是设备名,可以避免一些原因例如开机重启导致设备名更改。

r! blkid /dev/sdb # r是写入缓冲区,!是执行bash命令

生成uuid后,写好fstab文件的剩余配置即可,ext4是文件类型,剩余的配置可以按照默认的来填,这里的挂载点文件需要提前创建。具体的参数含义可以参考:
fstab参数含义
在这里插入图片描述
2、进行挂载

mount -a # -a意思是把文件配置文件中所有分区都挂载

3、查看挂载情况。若执行命令后看到自己的分支已经挂载在指定的目录,则挂载成功。

df -h

补充命令:
若遇到已经在用的磁盘,想重新分区,则需要把这些分区先格式化,在重新分区,然后再挂载,涉及到的一些命令如下:

parted /dev/sdb # 对磁盘sdb进行分区,这个命令可以对分区进行删除、重新分区等操作
mkfs -t ext4 /dev/sdb # 对分区进行格式化
mount /dev/sdb /data # 对分区进行挂载,但这个命令在重启服务器会挂载失效
umount # 卸载分区,若要对一个分区改挂载点,要先卸载之前的分区,再重新分区啊

至此,一个Ubuntu Server已经配置完成。

安装docker

为了让每个人可以在自己的环境中跑实验,这里利用了docker来进行环境的隔离和数据文件的隔离。

安装docker

安装过程参考菜鸟教程
菜鸟教程安装docker

注意:
在进行docker版本的选择时候,进行选择高版本的docker,避免后面造成不能识别nvidia驱动等问题。这里我的系统是ubuntu 18.04,但是安装的docker版本按照ubuntu 20.10来选择。
在这里插入图片描述

安装docker-compose

docker compose 是docker的运行管理工具,通过配置yaml文件,就可以做到配置docker运行的环境,很方便。

安装过程参考菜鸟教程:
docker compose 安装教程

注意:安装过程中的 docker compose同样要注意,选择版本高一点的docker compose,否则后面会造成在docker compose的配置文件上面的一些问题,我这里安装的是1.29.2
在这里插入图片描述

安装Nvidia驱动

1、 更新服务器内核

sudo vim /etc/modprobe.d/blacklist.conf

在该文件最后添加
blacklist nouveau
然后执行

sudo update-initramfs -u

2、下载安装
在官网选择好自己的显卡型号,可通过在windows下载特定的.run文件,再将该文件传到ubuntu server中。
安装官网

执行安装命令:

bash xxxx.run --no-x-check    --no-opengl-files

3、验证安装成功

nvida-smi

4、开启显卡持久化(使显卡一直保持着初始化)

sudo nvidia-smi -pm 1

使用docker-compose起docker

1、配置好自己的镜像
可以自己创建或者从docker 仓库拉取,具体参考菜鸟教程
制作镜像

2、 编写yml文件
这里展示的是我配好的一个yml文件,需要其他的环境可以对照教程来添加
在这里插入图片描述
3、利用docker-compose起docker服务

# 在yml文件目录下:
docker-compose up -d

4、查看docker情况

docker ps 

其它的docker命令可以查看菜鸟教程

编写docker和GPU使用监控脚本

为了避免某个人长时间使用服务器GPU或者开着docker 占着GPU而不使用,这里配置了两个shell脚本来监测docker和GPU的使用情况。
脚本我放在github上面了,若需要获取请打开下面链接。
脚本github链接

使用frp来进行内网穿透

此服务器是在学校内网里面,没有公网的地址,为了便于校外的同学也可以访问该服务器,可利用frp进行内网穿透。

frp是可以开源的内网穿透工具,具体可以参考以下链接
frp

这里的frps我用的是实验室买的阿里云。

目前只是把frp搭起来了,还没有很深入的了解frp的实现原理,这部分后面打算了解更深入一点,再用另外一篇博文来介绍。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐