基于docker的ubuntu服务器折腾记录

2020年12月7日17:46:21基于docker的ubuntu服务器折腾记录已关闭评论浏览:160 5201字阅读17分20秒

学校为大数据专业的同学配了几台服务器,俺就蹭了一个名额。

使用过程中也遇到了一些问题,就在这里记录一波。

系统信息

基本信息

ubuntu 18.04,

6H 64G 1.6T 这么大的磁盘,要不是怕有审查,我就存小姊姊了:)

自带Xfce桌面。

无中文语言包。

还自带docker,就很神奇。

性能测试

网络测试

硬件跑分

yum -y install wget screen      #for CentOS/Redhat
# apt-get -y install wget screen       #for Debian/Ubuntu
screen -S wzfou      #如果网路出现中断,可以执行命令`screen -R wzfou`重新连接测试窗口
wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh
#备用   wget --no-check-certificate https://github.com/freehao123/across/raw/master/unixbench.sh
chmod +x unixbench.sh
./unixbench.sh
#如果出现错误提示:Failed to download UnixBench5.1.3.tgz, please download it to /opt/unixbench directory manually and try again.手动下载:
cd /opt/unixbench
wget https://do.wzfou.net/wzfou/UnixBench5.1.3.tgz

也可以vi写一个UnixBench.sh文件

内容如下,

#! /bin/bash
#==============================================================#
#   Description:  Unixbench script                             #
#   Author: Teddysun <i@teddysun.com>                          #
#   Intro:  https://teddysun.com/245.html                      #
#==============================================================#
cur_dir=/opt/unixbench

# Check System
[[ $EUID -ne 0 ]] && echo 'Error: This script must be run as root!' && exit 1
[[ -f /etc/redhat-release ]] && os='centos'
[[ ! -z "`egrep -i debian /etc/issue`" ]] && os='debian'
[[ ! -z "`egrep -i ubuntu /etc/issue`" ]] && os='ubuntu'
[[ "$os" == '' ]] && echo 'Error: Your system is not supported to run it!' && exit 1

# Install necessary libaries
if [ "$os" == 'centos' ]; then
    yum -y install make automake gcc autoconf gcc-c++ time perl-Time-HiRes
else
    apt-get -y update
    apt-get -y install make automake gcc autoconf time perl
fi

# Create new soft download dir
mkdir -p ${cur_dir}
cd ${cur_dir}

# Download UnixBench5.1.3
if [ -s UnixBench5.1.3.tgz ]; then
    echo "UnixBench5.1.3.tgz [found]"
else
    echo "UnixBench5.1.3.tgz not found!!!download now..."
    if ! wget -c https://dl.lamp.sh/files/UnixBench5.1.3.tgz; then
        echo "Failed to download UnixBench5.1.3.tgz, please download it to ${cur_dir} directory manually and try again."
        exit 1
    fi
fi
tar -zxvf UnixBench5.1.3.tgz && rm -f UnixBench5.1.3.tgz
cd UnixBench/

#Run unixbench
make
./Run

echo
echo
echo "======= Script description and score comparison completed! ======= "
echo
echo

以下是相关测试参数,

# Dhrystone 2 using register variables
此项用于测试 string handling,因为没有浮点操作,所以深受软件和硬件设计(hardware and software design)、编译和链接(compiler and linker options)、代码优化(code optimazaton)、对内存的cache(cache memory)、等待状态(wait states)、整数数据类型(integer data types)的影响。
# Double-Precision Whetstone
这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列 c 函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支(conditional branch)和程序调用。此测试同时测试了整数和浮点数算术运算。
# Execl Throughput
此测试考察每秒钟可以执行的 execl 系统调用的次数。 execl 系统调用是 exec 函数族的一员。它和其他一些与之相似的命令一样是 execve() 函数的前端。
# File copy
测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。这一针对文件 read、write、copy 操作的测试统计规定时间(默认是 10s)内的文件 read、write、copy 操作次数。
# Pipe Throughput
管道(pipe)是进程间交流的最简单方式,这里的 Pipe throughtput 指的是一秒钟内一个进程可以向一个管道写 512 字节数据然后再读回的次数。需要注意的是,pipe throughtput 在实际编程中没有对应的真实存在。
# Pipe-based Context Switching
这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输。
# Process Creation
测试每秒钟一个进程可以创建子进程然后收回子进程的次数(子进程一定立即退出)。process creation 的关注点是新进程进程控制块(process control block)的创建和内存分配,即一针见血地关注内存带宽。一般说来,这个测试被用于对操作系统进程创建这一系统调用的不同实现的比较。
# System Call Overhead
测试进入和离开操作系统内核的代价,即一次系统调用的代价。它利用一个反复地调用 getpid 函数的小程序达到此目的。
# Shell Scripts
测试一秒钟内一个进程可以并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8。

执行之后,等它测试一段时间即可看到分数。

配置过程

服务器只支持浏览器的noVNC的登录方式,无法复制粘贴,截图也不太方便,所以所有命令都代码段形式展示。

另外,只提供ubuntu的配置方式,不过centos的相关配置应该都差不多。

报错bash: sudo: command not found

su -
apt-get install sudo

配置深度学习环境

因为自带docker环境,所以就直接试试docker镜像来一键配置环境。

我使用的是:hub.docker.com/r/ufoym/deepo

docker pull ufoym/deepo:all-jupyter-py36-cu100

这里的all-jupyter-py36-cu100是deepo提供的jupyter notebook镜像的tag。

安装node环境

sudo apt-get install nodejs
sudo apt-get install npm
npm install -g cnpm --registry=https://registry.npm.taobao.org

此处安装cnpm,是因为默认的npm源有太慢甚至连接超时,所以换成淘宝源的cnpm。

安装package时报错

大部分情况是网络问题,可以更换npm源后再尝试,或者使用cnpm进行安装

npm set register https://register.npm.taobao.org
npm set disturl https://npm.taobao.org/dist
npm cache clean --force

升级nodejs和npm

默认安装的node版本为@8.10.xx,不支持一些新的依赖库,所以进行升级。

sudo n stable
npm i -g npm

安装Anaconda后每次打开terminal都有(base)

每次打开terminal在最前面都有(base),感觉不太舒服。

解决办法有两个。

  • 直接输入命令conda deactivate
  • 将auto_activate_base参数设置为false实现:conda config --set auto_activate_base false

配置golang+goland

  • ubuntu安装golang很简单:sudo apt-get install golang

查看是否安装成功:go version

有版本号输出即为安装成功

  •  goland是JB家的ide,

官网的最新版下载地址为:https://www.jetbrains.com/go/

下载linux版的压缩包,我下载的是2020.3版本,

一般是在/Downloads文件夹下,

解压到/opt文件夹:tar -zxzf /Downloads/goland-2020.3.tar.gz -C /opt

在/opt/goland-2020.3/bin路径下可以找到goland.sh,

双击即可。

配置java+idea

  • java的安装还是很简单的(此处安装的是jdk8):sudo apt-get install openjdk-8-jdk,且无需再配置环境变量这些参数,直接:java -version即可看到版本号
  • idea的安装方法类似上面安装goland的步骤,不再赘述

配置python+pycharm

  • Ubuntu自带了python2.7,上面也安装了anaconda的python3.8,所以不再新装python环境。
  • pycharm的安装方法也类似上面安装goland的步骤。
  • 如出现‘pip command not found’error,可以输入sudo apt-get install python3-pip解决

安装vsocde

vscode官网提供了deb安装包,直接下载即可。

官网:code.visualstudio.com

部分Ubuntu版本可以直接双击安装,如果不能,可以使用以下命令安装。

sudo  dpkg  -i  code_xxxx.deb

安装git

打开vscode,发现没有找到git,

$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git

git作为当今最流行的版本控制工具,还是需要安装一波的。

我的是ubuntu,所以可以直接安装

sudo apt-get update
sudo apt-get install git

参考

继续阅读
技术最后更新:2020-12-26
  • 本文由 发表于 2020年12月7日17:46:21
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接