最近一直在研究实验室的服务器配置,从使用jupyter notebook远程配置,慢慢过渡到vscode和pycharm,但是一直没有找到完美的解决方案:
这个是jupyter notebook+docker的方案:
蝈蝈:Docker,救你于「深度学习环境配置」的苦海zhuanlan.zhihu.com![c07fbea3c3a085a11362fdc5a3e742a4.png](https://i-blog.csdnimg.cn/blog_migrate/bb854ab251e5b68b5268bb53877e04e9.jpeg)
jupyter notebook不能代码补全
vscode在使用docker远程调试的时候参考资料特别少,且大部分都是直连docker的方式,这种直连的方法我都没有尝试成功,因此最后采用docker容器+openssh的方式
这是vscode+docker的方案:
可达鸭头好痛:Docker+VSCode配置属于自己的炼丹炉zhuanlan.zhihu.com![628b6612514cc705f9d8db30c53da5e1.png](https://i-blog.csdnimg.cn/blog_migrate/f8757783c9767f3e4ac59713a2743a9a.png)
这是pycharm+docker的方案:
刘震:PyCharm+Docker:打造最舒适的深度学习炼丹炉zhuanlan.zhihu.com![f1f3ce8e0135bca3c241ed271ebe976e.png](https://i-blog.csdnimg.cn/blog_migrate/5293aa2fd36cb89846612d53155cfe15.jpeg)
但是这样又有问题,就是在容器重启之后ssh不能自动打开,需要手动输入,有点麻烦
为了解决这个问题,搜索了很久,查了很多资料最终决定使用supervisor
如何让操作系统为ubuntu的docker容器在启动时自动重启sshd服务?www.zhihu.com但是使用supervisor又遇到了一开docker容器,容器就会自动关闭的问题
最后发现似乎是没有前台进程导致docker容器自动关闭,解决方案如下:
使用Dockerfile构建supervisor容器部署项目,CMD ["supervisord","-c","/etc/supervisord.conf"]执行失败blog.csdn.net![0b62e0b8372b1e6d1ba469d2cf99b5a1.png](https://i-blog.csdnimg.cn/blog_migrate/94647f4646444676383d140bccfd9011.jpeg)
这里我附上自己的dockerfile和supervisor的配置文件,配置文件中大量参考以上给出的链接,有兴趣的朋友也可以根据以前的方法复现。
Dockerfile
#BASE IMAGE 选择你的基础镜像
FROM nvcr.io/nvidia/pytorch:20.12-py3
#LABEL MAINTAINER
LABEL maintainer = "yourname"
SHELL ["/bin/bash","-c"]
#这里将docker容器的root密码修改为passwd,可以自行更换
RUN echo 'root:passwd' | chpasswd
#更换pip源
&& pip install -U pip
&& pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
&& pip config set install.trusted-host mirrors.aliyun.com
#更换apt源
&& sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
&& apt-get clean
#安装并配置openssh-sever
&& apt update
&& apt install -y supervisor
&& apt install -y openssh-server
&& mkdir /var/run/sshd
#下面这一句要注意,有的可能需要将#删除,具体请看pycharm+docker的那个链接
&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
&& sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
&& echo "export VISIBLE=now" >> /etc/profile
#安装python第三方库
&& pip install geatpy
ADD supervisord.conf /etc/supervisor/supervisord.conf
EXPOSE 22
CMD ["supervisord","-n","-c","/etc/supervisor/supervisord.conf"]
supervisord.conf
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
autostart=true
autorestart=true
startsecs=3
然后通过docker build建立关联dockerfile的docker镜像,最后通过docker run创建容器即可。可以在run里加入--restart=always这个命令,docker build的命令我就不再赘述,萌新朋友可以百度一下,这里附上我的命令
#后面的路径可以换成你自己的路径 -t 后面的dl_cuda111也可以换成你自己的,代表镜像的名字
docker build -t dl_cuda111 ~/Desktop/mydocker
#docker run命令
sudo docker run --gpus all -idt -p 13001:13001 -p 13002:13002 -p 13003:22 --name='pytorch' -v /home/user:/workdir --ipc=host --restart=always dl_cuda111
至此就创建好了重启后仍然可以自启动,并且ssh仍然可以连接的docker容器,接下来你要配置vscode还是配置pycharm就很简单了,参考上面给的大佬的链接就可以了。
以上就是我最近折腾服务器的一点点总结,如有错误请各位指出,如果有小伙伴不懂的可以发在评论区,如果是我遇到过的我可以告诉你怎么解决,我偶尔会看评论区(不怎么玩知乎hh)