在服务器上使用docker拉取pytorch镜像(已下载好cuda)和juypterlab配置
pytorch
1先上pytorch官网拉取镜像,官网的网站:https://hub.docker.com/r/pytorch/pytorch/tags
docker pull pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel
# 在官网拉取镜像的好处在于不需要配置cuda了,仅仅在docker容器外面(物理机上)装好显卡驱动,docker和nvidia-docker就可以运行带有gpu的pytorch
拉取之后,使用docker images会出现你刚刚拉取的镜像
1:在终端上登录服务器
Docker:
利用镜像生成属于自己的容器
sudo docker images # 查看镜像
下图是我的终端上显示的所有的镜像
sudo docker run -it -d --name [container-name] -p 【端口号】 [image-name]
sudo docker run -it -d --name [这里自己取名] -p 【端口号】 [通过docker images查看有哪些,然后把名字复制上去就行]
举例(不要盲目的复制我的举例)
sudo nvidia-docker run -it -d --name wsy666 -p 1888:1888 pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel
# 端口号可以任意设置,目的是行成端口映射,方表在浏览器打开jupyterlab,端口号前后一样,最好大于1000
# 后面的镜像名字一定要根据你的sudo docker images来,TAG要根据你的TAG来写,中间要打一个冒号如【REPOSITORY】:【TAG】
# 名字随便去,例如wsy666
验证是否创建:
sudo docker ps -a
第一行是状态局栏显示的是信息,从第一行的CREATED查看建立时间,可以看出来刚刚在10秒钟前运行了一个容器,也就对应上面docker run建立的那个容器
# 以后重启容器也是如下指令不需要docker run了直接这样就能重启容器了,之前的配置都保留着 后面这一串很奇怪的16进制的数据是容器的id,下面的指令只有在打开容器才需要,容器打开后就不需要了
sudo nvidia-docker start 209ed649ddf4
sudo nvidia-docker exec -it 209ed649ddf4 /bin/bash
juypter:
安装juypter:
pip install -i https://pypi.douban.com/simple jupyterlab
配置jypter实现远程访问:
# 生成jupyter配置文件,这个会生成配置文件.jupyter/jupyter_notebook_config.py 很重要!!!
jupyter-notebook --generate-config
# 第一步先cd出去,然后输入ipython
cd
ipython
>>>from notebook.auth import passwd
>>>passwd()
Enter passwd: # 这里输入你的密码,随便输入作为打开jupyter的密码
Verify passwd: #重复输入密码
>>>'argon2:$argon2id$v=19$m=10240,t=10,p=8$YiTF3tI7ZWECTbNaa5VZtA$kaU+xbQSsMaZsH98sqoaGg' #复制这段秘钥,引号的内容全部都复制(包括引号)
输入 ctrl+d 退出
# 修改文件
sudo nano .jupyter/jupyter_notebook_config.py
# 下面是输入nano之后要给文档输入的东西 下面只用改两处地方,password和port,添加在第一行
c.NotebookApp.ip='*' # 绑定所有地址
c.NotebookApp.password = u'刚才生成的密码' # 上面的复制密码
c.NotebookApp.open_browser = False # 启动后是否在浏览器中自动打开
c.NotebookApp.port = 1888 # 指定一个访问端口,注意和映射的docker端口对应
如图所示:
到这一步之后,在服务器上创建docker容器以及配置juypter基本完成
# 在终端输入如下指令的其中之一启动juypter服务
jupyter lab
# nohup jupyter lab &
# 相比于jupyter lab的作用,第二条指令能够在关闭ssh也不会中断连接
# 在浏览器上输入你的服务器的ssh后面的数字,同时在结尾加一个:1888
# 比如我的服务器是12.121.655.15,我的输入就是:12.121.655.15:1888