之前也试过
1,.加--bind_all ,无效 。参考:解决本地无法访问 Docker 中 tensorboard2.2.2 端口的问题_梦家の博客-优快云博客
2.docker容器添加对外映射端口 ,多添加一个默认映射6006,也试过无效。
3.tensorboard在远程服务器上的两种使用场景 - Neo_KH - 博客园 ,试过这种,但是发现我一旦拥有多个映射,自动会映射22,没成功,而且他这个只能用tensorboard映射,不能做单独的外部文件访问(不能用xftp、xshell访问),也连不了pycharm。
这边是我的方法:
条件:
1.你的容器需要和宿主服务器建立一条映射,比如宿主服务器端口12622---->容器端口22(早期的这个12622端口是为了方便pycharm连接远端容器而建立的,而不是tensorboard)(区分不同的容器,别的同学也有自己的容器)
我的容器端口映射是这样的:
2.自定义的docker 内部装好了 openssh-server和openssh-client
- apt-get update
- apt-get install openssh-server
- apt-get install openssh-client
3.修改SSH配置文件以下选项
- vim /etc/ssh/sshd_config
- 修改后的内容如下:
- # PermitRootLogin prohibit-password , 默认打开 禁止root用户使用密码登陆,需要将其注释(在前面加个#号,如果有了表示已经注释)
- RSAAuthentication yes ,启用 RSA 认证
- PubkeyAuthentication yes ,启用公钥私钥配对认证方式
- PermitRootLogin yes ,允许root用户使用ssh登录(最主要)
下面开始实践:
1.在容器里面使用tensorboard,这边定义容器内部的端口号为1234
tensorboard --logdir=文件存放目录 --port 1234
2.在本地win10终端,建立一个链接,
ssh -L 16006:127.0.0.1:1234 容器用户名@服务器IP地址 -p 容器外部端口号
比如远程服务器容器的用户名为root(一般容器默认都是root用户),远程服务器IP为11.11.11.11,容器暴露的外部端口号为12622。而本地win10计算机localhost:16006访问远端服务器建立的127.0.0.1:1234的地址,那么应该写成如下格式:
ssh -L 16006:127.0.0.1:1234 root@11.11.11.11 -p 12622
然后在本地win10电脑浏览器访问地址,会发现可以访问了!
http://localhost:16006/