- 新用户创建容器时,新增两个预留端口
- 增加用户容器打包功能
由于目前组里服务器大网IP只对外开放一个端口,无法使用主流的做法,即宿主机ip
+ 分配的容器端口
的形式直接登录容器。根据搜集到的一些同学平时的使用习惯和需求,目前决定采用下面的折中方案:
还是给用户分配可以登录到宿主机的账号;通过指定用户组等方式,对用户权限进行一定的限制,不能随意更新或者安装软件;用户自己通过执行脚本登录容器,不太需要考虑容器的用法,在容器内可以自由操纵。
后续如果各台服务器端口能够放开,会回归到这个方案。
- 新用户需要向管理员申请用户权限,之后会分配到一个容器的SSH Port和两个预留端口。
- 每个人对自己的Docker Container有完全的控制权限。
- 物理机的资源(磁盘、内存、显卡)是所有Docker Container共用的。
- 基础镜像为nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04,即容器预装好了Ubuntu 18.04.5 LTS,显卡驱动450.102.04以及CUDA 10.1。
- 容器内安装了常用的库:apt-utils, vim, openssh-server, net-tools, iputils-ping, wget, curl, git, iptables, bzip2, command-not-found。
- 容器内安装了Miniconda v4.9.2, 附带了一个名为py37的conda虚拟环境。
使用分配的账号登录服务器:
ssh <user>@<gpu-server-ip> -p <gpu-server-port>
进入用户家目录下 docker-gpu 目录,即/home/$USER/docker-gpu,执行 ./login.bash:
cd docker-gpu && ./login.bash
即可进入容器启动界面,根据提示可以启动/停止/重启容器。其他功能陆续更新中。
第一次登录时,会自动创建Docker Container。
根据提示输入:login
Please input your command:
login
若此时Container没有启动,则会自动开启,并显示当前容器状态。
输入容器root账号的密码(默认123456),即可进入容器,大家就可以自由发挥,配置自己需要的环境和软件。
建议进入容器后立即修改自己的密码。
根据提示输入:stop
Please input your command:
stop
即可手动关闭自己的容器。
根据提示输入:restart
Please input your command:
restart
即可手动关闭自己的容器。
如果想保存配置好的环境,可以对容器进行备份,根据提示输入:snapshot
Please input your command:
snapshot
容器快照保存在外挂磁盘中,如GPU01的路径,/data/Workspaces/container-snapshot
。
快照以用户名命名。具体信息可参见屏幕输出。
保存容器快照后请记得及时把tar拷贝到自己的本机,由于服务器上空间有限,会不定期将文件删除。
请注意,按这种方式保存的快照文件会被覆盖。
容器启动默认挂载两个宿主机目录。
- 本地磁盘,用户家目录:/home/$USER :/home/$USER
- 数据盘(建议把数据放在这个下边),各服务器挂载形式如下:
服务器 目录挂载 gpu01 /data:/data gpu03 /mnt:/mnt
使用容器时,容器中的数据需要保留时需要写在这两个目录下面,否则容器删除重建时数据会丢失。
为满足同学使用要求,分配容器时新增两个预留端口。端口信息显示在提示页。
由于dockerfile目前没有预置该功能,需要用户额外进行如下操作:
-
使用
ssh -X
来访问容器,目前启动脚本中默认带了-X
参数,不需要额外设置; -
在容器内安装
xauth
:sudo apt install xauth # if not installed
-
在/etc/ssh/sshd配置文件中加入下面这几行:
vi /etc/ssh/sshd_config X11Forwarding yes # add X11UseLocalhost no # add /etc/init.d/ssh restart # 重启SSH使设置生效
-
退出容器重新登录,就可以将远程的 GUI 放在本地显示了。
apt-get install x11-apps # if not installed xeyes # for example xeyes & # or you can run in backround
目前只在gpu01上使用docker gpu server方案,待运行稳定、可靠、适用之后再考虑到迁移到gpu02和gpu03。
Name | IP | CPU | GPU | Memory | Hardware |
---|---|---|---|---|---|
gpu01 | 10.10.49.174 | i9-9960X / 3.10GHz | GeForce RTX 2080Ti * 4 | 16GB * 8 | 4T HDD + 512GB SDD |
gpu02 | 10.10.49.172 | i9-9960X / 3.10GHz | GeForce RTX 2080Ti * 4 | 16GB * 8 | 4T HDD + 512GB SDD |
gpu03 | 10.10.49.173 |
gpu01用户列表:
username | gpu01 port |
---|---|
zhangyiteng | 22000 |
liyouhua | 22004 |
lethe | 22005 |
xuewen | 22006 |
colocasia | 22009 |
lxy | 22010 |
BingQian | 22011 |
wangkexin | 22012 |
wxq928 | 22013 |
fanxiaoxuan | 22014 |
sjy | 22015 |
gpu03用户列表:
username | gpu03 port | gpu03 reserverd ports |
---|---|---|
liyouhua | 22000 | 18000 18001 |