上一篇文章中,我们实现了visdom对深度学习过程的可视化,为了更方便的在本地查看可视化的动态过程,需要开启并暴露Docker容器内visdom的8097端口,进一步使用MobaXterm的Tunneling工具将其转发到本地,进而在本地浏览器中查看。
下面将实现过程分享并记录如下:
- 由于之前run docker的时候没有开启visdom的映射端口8097,下面我们修改docker的host文件,开启并暴露8097端口以及其本地映射IP。
- 首先停掉docker,否则修改无效!
systemctl stop docker
- 在/var/lib/docker/containers/{容器ID}/目录下找到两个文件:
hostconfig.json
和config.v2.json
- 使用vim修改
hostconfig.json
,在“PortBindings”中添加红线画出的语句
vim hostconfig.json
"8097/tcp":[{"HostIp":"127.0.0.1","HostPort":"8097"}]
- vim修改
config.v2.json
,在"ExposedPorts"中添加红线画出的语句
vim config.v2.json
"8097/tcp":{}
- 重启docker
systemctl start docker
- 查看修改后docker的映射端口
docker port 56c6 #56c6为容器ID
这时发现,visdom的8097端口已经开启并暴露,本地IP为127.0.0.1,端口号为8097。下面只需要将此端口转发到本地,即可。
这里有两种实现方法,为了不跑题,我先说说比较方便的使用MobaXterm的tunneling工具的方法,文末我再补充一种最原始的方法。
-
首先打开MobaXterm,连接到我们使用的服务器,点击Tunneling
-
再弹出的对话框中,点击左下角
New SSH tunnel
按钮 -
选择
Local port forwarding
,即把远程服务器的端口通过SSH转发到本地某端口。1处:输入远程服务器IP; 2处:用户名; 3处:docker内8097端口的本地IP 127.0.0.1; 4处:visdom映射端口号; 5处:转发到本地的接受端口,我这边PC一直提醒我设置为65535,我就照办了,这个应该可以根据自己的使用情况设置。这些设置完后,点保存即可。
-
如果之前已经连接到服务器,应该就弹出下面的窗口,如果没登录,可能需要输一遍密码才行。建议在Setting框内选中最后两项,功能分别为:①打开MobaXterm后自动开启端口转发;②错误恢复后,自动开启端口转发。
-
最后,点击Start按钮,整个过程就完成啦!在本地浏览器中键入127.0.0.1:65535,此时,实现了Docker内开启并暴露visdom的8097端口,并将其通过MobaXterm转发到本地的任务。这样我们就能很方便的在本地查看深度学习的可视化动态过程。
补充方法:上面的方法很方便,只需要设置一次,在以后的使用过程中不需要反复设置。但是楼主第一次联调的时候用的不是这个方法,用的最原始的SSH连接方法,后来仔细一想MobaXterm这么高级的东西应该有解决这个问题的方法,才发现了上面的新大陆。这里也是作为一个学习过程的记录,把最原始的方法也分享如下: -
在Window操作系统下,Win+R cmd
-
终端内输入:ssh -L 8097:127.0.0.1:8097 服务器用户名@IP地址
-
输入密码
-
在本地浏览器中键入127.0.0.1:8097
-
Successfully!(确保容器内的visdom服务是打开状态)
总结:这其实是第一种方法的内核,就是通过SSH把8097端口转发到本地的,只不过MobaXterm把这个过程打包封装了。至此我们就实现了使用RTX 3090显卡的Docker+pycharm+visdom在Portch框架下远程联调以及本地可视化动态监视。上述的过程如果大家有更好的方法或者建议请不要犹豫留言并联系我一起讨论学习!鞠躬!对前面的配置不清楚的同学可以移步我得前一篇文章《RTX 3090显卡——Docker+Pycharm+visdom联调(Pytorch框架)》