windows连接服务器docker中的tensorboard

一、流程如下:

1,首先服务器创建docker的时候需要使用-p将服务器的p0(如6007,也可以和p1一样)映射到docker容器里面的端口p1(一般用6006,因为tensorboard默认端口是6006)

2,通过-p将服务器p2端口映射到容器的22端口

3,在容器里的命令行启动tensorboard,tensorboard --logdir=your path --bind_all --port p1,我这边发现不加--bind_all会失败(有时不会),--port可以不用添加,默认使用6006

3,在windows上使用ssh命令添加隧道,通过本地端口号p3访问p0,最终达到访问p1(因为p0被映射到了p1),也可以通过图形化界面工具如mobaxterm,这个工具和xshell类似,挺好用的还免费

4,在windows的浏览器里面输入http://localhost:p3或者http://127.0.0.1:p3

二、具体流程

1,创建docker

a),docker run -d -it --name tb -p 10010:22 -p 6007:6006 -v $PWD:/data ubuntu  bash

b),docker exec -it tb bash 因为是用的后台启动容器,因此需要在通过这行命令才能进入容器

    -d: 后台运行容器,并返回容器ID

    -i: 以交互模式运行容器,通常与 -t 同时使用

    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用

    --name: 给容器取个别名

    -P: 随机端口映射,容器内部端口随机映射到主机的端口

    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

    -v: 挂载本地目录至容器中, 格式: -v <host_path>:<container_path>

    这里注意有两个端口映射,将服务器的6007端口(p0)映射到容器内的6006端口(p1)(这个端口号是为了让容器里面tensorboard进程的端口号和服务器进行通信)

    将服务器的10010端口(p2)映射到容器的22端口(这个端口号是为了让ssh能连进去docker),

c),docker里面的用户名为root,修改其密码,并启动ssh服务

  1. passwd
    1. 输入密码
  2. 首先检查容器内部是否以安装 openssh-server与openssh-client 若没安装执行一下命令安装
    1. apt-get update
    2. apt-get install openssh-server
    3. apt-get install openssh-client
  3. 修改SSH配置文件以下选项
    1. vim /etc/ssh/sshd_config
    2. 修改后的内容如下:
      1. # PermitRootLogin prohibit-password , 默认打开 禁止root用户使用密码登陆,需要将其注释(在前面加个#号,如果有了表示已经注释)
      2. RSAAuthentication yes ,启用 RSA 认证
      3. PubkeyAuthentication yes ,启用公钥私钥配对认证方式
      4. PermitRootLogin yes ,允许root用户使用ssh登录(最主要)
  4. /etc/init.d/ssh restart
  5. exit

d),测试ssh是否可以用,在服务器里面操作

    ssh root@127.0.0.1 -p 10010,输入c)中修改的密码

    exit 退出容器

2,在容器里的命令行输入,tensorboard --logdir=your path --bind_all --port p1,步骤2和步骤3顺序可以颠倒,其中--port p1也可以不用添加,直接使用默认的6006

3,建立隧道

方法一:在xterm工具中操作,该方法不需要每次都输入ssh命令了

    a) Tools->MobaSSHTunnel(port for warding)->New SSH tunnel

    b)输入对应的信息然后点save,可能需要添加ssh认证点yes即可,输入远程服务器用户名对应的密码,如果填写的是docker内账号root,则输入前面修改的root对应的密码

    c)具体填写实例

需要输入passwd修改后的密码

或者

 需要输入服务器用户名的密码

方法二:windows的命令行操作:

    a)在windows环境使用win键+r,然后输入cmd

    b)然后输入ssh命令

ssh -L 6008:10.128.8.141:6007 root@10.128.8.141 -p 10010

    该命令解释如下:windows本地启动6008端口[p3端口]通过10.128.8.141上开放的10010端口[p2端口](该端口已经映射到了docker内部的22端口,实际上是通过docker内进行转发的),使用docker内用户root转发到服务器ip为10.128.8.141的6007端口[p0](该端口已经被映射到docker内的6006端口[p1端口],实际上是转发到docker内的6006)

    输入yes,密码是服务器用户名为passwd修改后的密码

    【注】关于ssh命令中的-L,-R,-D的区别SSH 命令的三种代理功能(-L/-R/-D) - 知乎

本地端口通过跳板映射到其他机器

HostA 上启动一个 PortA 端口,通过 HostB 转发到 HostC:PortC上,在 HostA 上运行:

HostA$ ssh -L 0.0.0.0:PortA:HostC:PortC  user@HostB

这时访问 HostA:PortA 相当于访问 HostC:PortC。

这种用法一般本地就是 HostA,访问本地的 PortA,数据被 ssh 加密传输给 HostB 又转发给 HostC:PortC。

或者

ssh -L 6008:10.128.8.141:6007 yckj3250@10.128.8.141

 这里没有添加-p的原因是服务器默认使用22端口进行ssh通信

该命令解释如下:windows本地启动6008端口[p3端口]通过10.128.8.141上用户yckj3250转发到服务器ip为10.128.8.141的6007端口[p0](该端口已经被映射到docker内的6006端口[p1端口],实际上是转发到docker内的6006)

 exit退出ssh连接

如果在win命令行报错Bad local forwarding specification... 解决方法:命令粘过来的空格有问题,先粘到记事本等地方转为纯文本,再粘过来就OK了或者重新手打

4,windows浏览器输入http://localhost:6008/或者输入http://127.0.0.1:6008/回车即可

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值