ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(二)
本教程适用于想要在远程服务器上配置docker图形界面用于深度学习的用户。
(二)nvidia docker配置Deepo用于深度学习并配置ssh远程访问docker
第一步:拉取Deepo镜像
Deepo是一个几乎包含所有流行深度学习框架的Docker映像,拥有一个完整的可复制的深度学习研究环境。它涵盖了当前最流行的深度学习框架:
theano,tensorflow,sonnet,pytorch,keras,lasagne,mxnet,cntk,chainer,caffe,torch。
换国内镜像源:
输入指令:sudo vim /etc/docker/daemon.json
修改内容为:
1 {
2 "registry-mirrors": ["https://registry.docker-cn.com"],
3 "runtimes": {
4 "nvidia": {
5 "path": "nvidia-container-runtime",
6 "runtimeArgs": []
7 }
8 }
9 }
保存并退出。
拉取Deepo镜像:
输入指令:docker pull ufoym/deepo
待下载完成后输入指令:sudo nvidia-docker run --rm ufoym/deepo nvidia-smi检测镜像是否能成功加载。(不报错即为成功)
第二步:配置Deepo镜像中的ssh服务
本教程配置的Deepo镜像中系统版本为Ubuntu 16.04.5 LTS,本身不带ssh服务,需自行配置,配置方法如下:
开启docker:
1 sudo nvidia-docker run #nvidia-docker启动容器命令
2 -it #启用前端交互界面
3 -p 10000:22 #配置端口号(10000为主机任意空闲端口,22为容器中ssh服务端口)
4 ufoym/deepo #选择要启动的镜像
5 bash #加载一个bash用于交互
容器内换国内镜像源:
1 cp /etc/apt/sources.list /etc/apt/sources.list.old
2 vim /etc/apt/sources.list
修改为以下内容:
1 deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
2 deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
3 deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
4 deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
5 ##测试版源
6 deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
7 # 源码
8 deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
9 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
10 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
11 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
12 ##测试版源
13 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
14 # Canonical 合作伙伴和附加
15 deb http://archive.canonical.com/ubuntu/ xenial partner
16 deb http://extras.ubuntu.com/ubuntu/ xenial main
保存后退出
1 apt-get update
安装ssh:
1 apt-get install openssh-server
2 vim /etc/ssh/sshd_config
找到以下内容并修改如下所示:
1 # PermitRootLogin without-password #add '#'
2 PermitRootLogin yes #add
保存并退出
1 service ssh start
输入指令:ps -e |grep ssh检查ssh是否成功安装并开启:
修改root密码:
passwd root
输入密码并确认密码
之后输入指令:exit #退出容器
保存安装ssh后的镜像:
输入指令:sudo docker ps -a
显示当前运行过的容器,找到刚才配置过ssh的CONTAINER ID(如果完全按本教程的步骤的话应该是第一个),比如是4e67fae0d525。
输入指令:sudo docker commit 4e67fae0d525 ufoym/deepo:ssh 即可保存该镜像。
输入指令:sudo docker images即可查询所有镜像。
检测该镜像ssh是否能否正常使用:
开启容器:sudo nvidia-docker run -it -p 10000:22 ufoym/deepo:ssh bash
确保ssh服务正常启用:ps -e |grep ssh(没有的话手动启用service ssh start)
远程访问指令:ssh root@IP地址 10000 输入root密码即可远程连接进入容器
目前的配置已经满足深度学习的需求了,下一期将介绍如何在现有基础上在docker中配置远程桌面连接。使不熟悉终端操作的用户也能方便使用docker。
本期参考教程:
拉取镜像:https://blog.csdn.net/qiansg123/article/details/78559085
Ubuntu换源:https://blog.csdn.net/qq_35451572/article/details/79516563
安装ssh:https://jingyan.baidu.com/article/9c69d48fb9fd7b13c8024e6b.html
构建镜像:https://blog.csdn.net/hylexus/article/details/52854470