实验室公用服务器之Docker配置

对于计算机科研,需要使用服务器进行必要的实验。由于使用同一服务器的同学很多,因此为了保证每位同学在使用时能够在服务器上拥有自己的环境,于是使用docker进行管理。其原理就是为每位同学建立属于自己的容器,与宿主机隔离,形成独立的沙箱,这样每个人就可以在自己的docker中乱搞,而且不会影响到其他同学的使用了。

下面将以Ubuntu 18.04.4 LTS为例说明配置属于自己的docker的流程。

本实验服务器环境及配置如下:

  • Ubuntu 18.04
  • GTX2080Ti $\times$ 4
  • cuda 10.1

步骤

我们将物理服务器上操作系统称之为宿主机,保证在宿主机上安装有docker,如没有安装,请自行安装docker。

1.查看是否安装成功:docker -v

2.然后从Docker Hub上寻找并拉取所需要的镜像,这里拉取了nvidia/cudadocker pull nvidia/cuda:10.0-base

3.通过docker run命令创建一个新的容器,其命令格式为:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

其中OPTIONS有如下配置:

参数名含义
-d, --detach=false指定容器是否运行于前台,默认为false,当设置为true容器会在后台运行并返回容器id
-i, --interactive=false打开STDIN,用于控制台交互
-t, --tty=false分配tty设备,该可以支持终端登录,默认为false
-u, --user=""指定容器的用户
-a, --attach=[]登录容器(必须是以docker run -d启动的容器)
-w, --workdir=""指定容器的工作目录
-c, --cpu-shares=0设置容器CPU权重,在CPU共享场景使用
-e, --env=[]指定环境变量,容器中可以使用该环境变量
--name=""为容器指定一个名称
-m, --memory=""指定容器的内存上限
-P, --publish-all=false随机指定容器暴露的端口
-p, --publish=[]指定容器暴露的端口
-h, --hostname=""指定容器的主机名
-v, --volume=[]给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[]给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[]添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cap-drop=[]删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cidfile=""运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset=""设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--device=[]添加主机设备给容器,相当于设备直通
--dns=[]指定容器的dns服务器
--shm-size=设置共享内存大小,默认是64M
--gpus gpu-request要添加到容器的GPU设备(all用于传递所有GPU)

​ 本例中使用docker run --gpus all -itd --name=xxx --shm-size 64G -p 9099:22 -v /media/work/xxx:/data nvidia/cuda:10.0-base创建容器,其中选项可查阅上表自行配置。

4.运行起容器后,会返回容器的id,可通过docker ps查看该容器的运行情况。同样在宿主机中,使用docker exec -it xxx /bin/bash进入容器内部进行交互,xxx可以是容器的name也可以是容器id。

5.通常新机器是没有安装ssh的,可以通过service ssh start/etc/init.d/ssh来启动ssh服务,如果报错为bash: /etc/init.d/ssh: No such file or directory类似的信息,则需要重新安装ssh。对于Ubuntu系统,具体方法如下:

sudo apt-get remove openssh-server  openssh-client --purge -y
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get update
sudo apt-get install openssh-server openssh-client

安装完成后即可启动ssh。

6.依然在宿主机中,还是进入容器内部,使用passwd命令更改登录密码,此密码用于ssh登录。
7.使用exit退出容器,再使用一次exit登出宿主机。现在通过ssh root@ip -p 9099发现并不能直接连上,即使是给容器设置了密码。
8.回到步骤6,进入容器后,vi /etc/ssh/sshd_config,将PermitRootLogin的选项设置为true。保存后使用service ssh restart重启ssh服务。
9.回到步骤7,这时就可以成功通过ssh命令连接到属于自己的docker了。

大功告成!

本文作者:Author:     文章标题:实验室公用服务器之Docker配置
本文地址:https://alphalrx.cn/index.php/archives/137/     
版权说明:若无注明,本文皆为“LRX's Blog”原创,转载请保留文章出处。
Last modification:June 17th, 2020 at 05:08 pm
给作者赏一杯奶茶吧!

5 comments

  1. hairuo

    这篇写得还行,可是问题我的友联怎么不见了...

    1. obsidian
      @hairuo

      因为403了

      1. hairuo
        @obsidian

        白名单了,你刷新下试试从你的站上访问

      2. hairuo
        @obsidian

        403,cdn的吗?是的话那就是我忘了给你开权限→_→

        1. obsidian
          @hairuo

          OK

Leave a Comment