关于docker和nvidia docker(用来支持容器内调用GPU做深度学习模型训练)的安装可以查看本人基它的博客。
首选拉取镜像,我们计划将在镜像中安装tensorflow:
#本镜像cuda 10.1 cudnn 7.6.5 ,系统是18.04,与宿主机相同
docker pull nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04
拉取后要创建容器:
#docker 19.03及以后版本
docker run -itd --gpus all --restart always -p 10008:10008 -p 10009:10009 -w /workspace -v /home/workspace:/workspace --name fushan nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 /bin/bash
#docker 19.03以前版本
nvidia-docker run -itd --runtime=nvidia --restart always -p 10008:10008 -p 10009:10009 -w /workspace -v /home/workspace:/workspace --name fushan nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 /bin/bash
本次有两个端口映射一个计划用于本次远程连接,一个用于使用jupyterlab.
第一个是宿主机:容器 为10008:10008。
这样一个名叫fushan的容器就创建成功了。
进入容器后执行以下命令:
apt-get update
apt-get install openssh-server
apt-get install openssh-client
apt-get install ssh
apt-get install vim
接着修改ssh的配置文件:
vim /etc/ssh/sshd_config
#填加以下内容:
Port 10008
PermitRootLogin yes #允许root用户使用ssh登录
重启ssh服务:
/etc/init.d/ssh restart
填加root密码:
passwd
退出容器,做连接测试:
ssh [email protected] -p 10008
此时,用任何远程工具如xshell,mobaxterm,putty,securecrt等工具都可以直接连接到shell上的终端,如同使用远程服务器一样来进行使用。但我们要使用一个编辑器,所以如下文,我们选择vscode和jupyter
vscode要安装有remote ssh,打开配置文件,输入
Host 起个名
HostName 远程机器的ip
Port 10008
User root
这样连接远程服务器上容器就像连接远程服务器一样。有时会提示vscode sever安装中,但网络等原因问题会安装不上,也会显示连接失败。这时,可以将系统的vscode server复制到容器中(已经连接成功远程服务器,远程服务器的~/路径下存在.vscode_server文件),vscode sever中有远程服务器的vscode插件和python环境,这个文件可以去https://download.csdn.net/download/u011119817/16818309下载。
#容器外执行
docker cp ~/.vscode_server 容器名或容器id:/root
连接成功后如下示例图:
这样,使用远程服务器中启动的容器就如同直接使用远程服务器一样
输入命令:
nohup jupyter lab --port 10008 --allow-root &
cat nohup.out
接着使用任何一个shell工具,进行端口转发都可以,如下使用vscode:
依次点击
鼠标移过去会有一个小球,直接打开浏览器,点击如下:
会有这样一个页面,为了避免每次都输入密码,我们可以进行设置。
以上内容,本人亲测可行。