首先得先配置好宿主机和docker的端口映射:
我用的是:
如何构建docker gpu,可以参考我另外一篇博客:最简单的办法!Ubuntu下创建Docker-gpu!_Beam-ice的博客-CSDN博客
docker中设置root密码;
passwd
检查是否容器内是否安装openssh-server与openssh-client;
apt-get update
apt-get install openssh-server
apt-get install openssh-client
在容器中修改ssh配置文件;
vim /etc/ssh/sshd_config
# 文件中的下面注释取消
#PermitRootLogin prohibit-password 改为
PermitRootLogin yes
:wq保存文件
/etc/init.d/ssh restart #docker下没有systenctl,所以只能用这个
exit() # 退出容器
在宿主机中测试ssh
ssh root@127.0.0.1 -p 10010
# 键入刚输入的root密码,就可以了
exit()
在这里如果测试不通过,我遇到的问题就是:
接着在容器中,修改hosts.allow,大概原因就是容器中不是所有ip主机都可以访问
vim /etc/hosts.allow
# add
sshd: ALL # 允许所有ip主机都能连接
在容器中运行tensorboard,在容器里的命令行输入,tensorboard --logdir=your path --bind_all --port p1,其中--port p1也可以不用添加,tensorboard直接使用默认的6006;
windows下cmd运行
ssh -L 6008:XXX:6006 root@xxx -p 10010
该命令解释如下:windows本地启动6008端,通过服务器公网IP上开放的10010端口该端口已经映射到了docker内部的22端口,实际上是通过docker内进行转发的),使用docker内用户root转发到服务器ip为公网IP的6006端口
输入密码就已经连接上了
本地打开浏览器:localhost:6008就可以了!
参考文章:
windows连接服务器docker中的tensorboard_南国那片枫叶的博客-CSDN博客_docker tensorboard