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