一、流程如下:
1,首先服务器创建docker的时候需要使用-p将服务器的p0(一般为6006)映射到docker容器里面的端口p1(p0和p1可以不一样,但一般用6006,因为tensorboard默认端口是6006)
2,在容器里的命令行启动tensorboard,tensorboard --logdir=your path --bind_all,我这边发现不加--bind_all会失败
3,在windows上使用ssh命令添加隧道,通过本地端口号p2访问p1,也可以通过图形化界面工具如mobaxterm,这个工具和xshell类似,挺好用的还免费
4,在windows的浏览器里面输入http://localhost:p2或者http://127.0.0.1:p2
二、具体流程
1,创建docker
a),docker run -d -it --name tb -p 10010:22 -p 6006:6006 -v $PWD: /data ubuntu bash
b),docker exec -it tb bash 因为是用的后台启动容器,因此需要在通过这行命令才能进入容器
-d: 后台运行容器,并返回容器ID
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name: 给容器取个别名
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-v: 挂载本地目录至容器中, 格式: -v
这里注意有两个端口映射,将服务器的22端口映射到容器的10010端口,将服务器的6006端口映射到6006端口
c),docker里面的用户名为root,修改其密码,并启动ssh服务
passwd
********(输入密码)
/etc/init.d/ssh restart
exit
d),测试ssh是否可以用,在服务器里面操作
ssh [email protected] -p 10010,输入c)中修改的密码
exit 退出容器
2,在容器里的命令行输入,tensorboard --logdir=your path --bind_all,步骤2和步骤3顺序可以颠倒
3,建立隧道
方法一:在xterm工具中操作,该方法不需要每次都输入ssh命令了
a) Tools->MobaSSHTunnel(port for warding)->New SSH tunnel
b)输入对应的信息然后点save,可能需要添加ssh认证点yes即可,输入远程服务器用户名对应的密码,如果填写的是docker内账号root,则输入前面修改的root对应的密码
c)具体填写实例
方法二:windows的命令行操作:
a)在windows环境使用win键+r,然后输入cmd
b)然后输入ssh命令
ssh -L 6008:10.168.4.34:6006 [email protected]
该命令解释如下:windows本地的6008端口映射到服务器ip为10.168.4.34的6006端口
输入yes,密码是服务器用户名为yckj3250的密码
关于ssh命令中的-L,-R,-D的区别https://zhuanlan.zhihu.com/p/57630633
4,windows浏览器输入http://localhost:6008/或者输入http://127.0.0.1:6008/回车即可