「记录」在vSphere中基于Ubuntu Server 1604部署Docker,并安装CUDA,构建多层虚拟化深度学习开发环境

首先准备好Ubuntu Server 1604的虚拟机,只设定基本功能,不添加显卡直通等特殊功能,以便于基础环境完成后进行快照。

安装好系统后,进行ssh端口设置,apt换源,apt upgrade等基本操作,之后关机打快照。

1、 显卡直通

1.1、 添加显卡直通

勾选“预留所有客户机内存(全部锁定)”,并添加显卡PCI设备,确定修改。不在第一步直通显卡的话,之后的驱动安装可能有问题!

1.2、 修改虚拟机硬件配置参数

切换到“虚拟机硬件”选项卡。展开“高级”,修改“配置参数”。 在打开的“配置参数”对话框中,点击“添加配置参数”,填入“
hypervisor.cpuid.v0 = FALSE”
,确定修改。完成后务必再次进入“配置参数”,检查参数确实已经添加并保存!

1.3、 启动虚拟机并配置基本环境

配置网络、换源、更新软件包等

完成基本配置后建议对虚拟机生成快照!

2、 安装显卡驱动

2.1、 下载驱动

可以在 NVIDIA驱动下载 或者 Geforce显卡驱动下载 页面搜索并下载需要的驱动程序,也可以通过直接拼接资源链接:
http://cn.download.nvidia.com/XFree86/Linux-x86_64/[驱动版本号]/NVIDIA-Linux-x86_64-[驱动版本号].run,进行下载。比如我要下载430.14版本号的Linux驱动,可以直接在服务器运行以下代码:

2.2、 检查GPU

应该显示相应的PCI设备

2.3、 禁用nouveau

2.3、 安装显卡驱动

安装完驱动建议对虚拟机生成快照!

然后开机安装docker,去清华源帮助文档里找清华源安装方法。安装好之后配置docker远程管理,参考“docker 配置 TLS 认证开启远程访问”“Docker 守护进程+远程连接+安全访问+启动冲突解决办法 (完整收藏版)”。配置好docker之后关机打快照。

在ESXi中添加显卡直通,并启动。

2020年6月28日补充

2.4、安装CUDA

本处使用的CUDA安装文件是文章在19年6月初次完成时下载的,因此安装方法也是当时的安装方法。根据从英伟达官网的CUDA安装文档来看,最新的推荐安装方式似乎变成了用apt包管理器安装。但是根据最新的安装文档,我在操作过程中出现了两个问题:首先是所有的下载资源(包括软件源证书和软件包)都无法在中国大陆正常下载;另一个是安装后server系统会出现GUI界面。因此,我决定使用去年的安装包和安装方法。

安装完CUDA建议对虚拟机生成快照!

3、 安装Docker

3.1、 安装Docker

根据清华开源镜像站的帮助文档,安装Docker。

3.2、 安装nvidia-docker

安装并配置好docker建议对虚拟机生成快照!

4、 配置TLS远程管理,及Portainer接入

配置TLS远程管理是在Docker服务器(运行docker守护进程的服务器)进行配置,因此下面的$HOSTDocker服务器的IP

4.1、 修改openssl配置的CA部分

ubuntu 16.04 下 openssl 配置文件位置:/usr/lib/ssl/openssl.cnf,其他系统可参考

4.2、 生成私钥并自签证书

4.3、 颁发证书

4.4、 配置Docker使用TLS认证

4.5、 Portainer接入

如果已经添加过服务器,只更新TLS认证配置,则只需要上传相应证书:

/etc/docker/ssl/目录内的cert.pemkey.pem文件拷贝到本地,上传至Portainer。

上传证书

如果是新服务器,按照下面步骤进行添加:

配置好TLS远程管理后建议对虚拟机生成快照!

参考资料

docker 配置 TLS 认证开启远程访问

Docker 守护进程+远程连接+安全访问+启动冲突解决办法 (完整收藏版)

SSH攻击的检测与预防

经朋友提醒,意识到自己的服务器可能被SSH攻击,于是赶紧查了日志。

结果是:

10409 91.234.184.21
  3412 Failed
  1771 43.229.53.67
  1125 182.100.67.59
    270 218.87.109.253
    250 158.85.76.188
    233 27.191.209.88
    153 120.26.71.98
    148 218.65.30.92
    107 115.238.81.90
      70 222.186.21.100
      31 202.38.193.142
      27 218.98.39.43
      20 121.40.158.23
      18 218.5.9.226
      17 218.28.152.162
      15 222.186.21.71
      14 123.59.55.83
      13 119.167.156.38
      12 27.254.67.157
      12 103.6.223.61
      11 201.166.63.25
      11 119.163.120.202
      10 193.189.117.120
      10 107.150.19.184
        9 210.107.37.81
        9 202.99.207.123
        8 203.94.70.125
        8 180.210.201.106
        6 31.184.195.111
        6 187.62.210.26

这是要死的节奏啊,果然被试密码,仔细检查了日志,好在还没被破解,但是这样的事情很让人心烦!于是决定做一些预防措施。

换端口号,并禁止root登陆

测试不会冲突后修改

找到

Port 22

修改为自己想要的端口,找到

PermitRootLogin yes

改为 no 。