win下利用mobaXterm软件ssh连接docker的ubuntu image


环境描述

win7
docker安装,基于Oracle VM
镜像文件docker run -it -p 4567:4567 -v ‘pwd’:/work udacity/controls_kit:latest,自动下载
shh工具Xshell 和mobaXterm


提示:以下是本篇文章正文内容,下面案例可供参考

一、遇到问题

之前一直通过Xshell连接docker,连接的是docker本身,然后执行docker run运行image,利用docker attach [容器]name,就可以操作容器了,但是在容器里写python代码,运行时Xshell无法看到plt.show() 的图像,报错为_tkinter.TclError: no display name and no $DISPLAY environment variable,于是就按照网上教程进行修改

二、网上解决方法(无效)

1.采用matplotlib.use(‘Agg’)

代码如下(示例):参照here

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

2采用Xming+shell(也没解决)

参考here
运行后无反应,可能不知道Xming怎么用

3.采用XShell+Xmanager

这个可能解决,因为是一家的软件,参考herehere

三、采用MobaXterm+配置端口映射

参考here,进行配置,但是最后还进不去,因为开始的时候只设置了4567:4567端口映射
通过docker ps查看容器及其端口,发现只有0.0.0.0:4567->4567/tcp, Image的地址是docker虚拟的,为172.17.0.2
先通过Oracle配置虚拟机和docker的端口对应,将PC的5001和虚拟机的5001对应,然后在docker中将5001和Image的22号端口对应,这样ssh从PC端就可通过访问docker的IP192.168.99.100,自动端口转发访问到Image的22号端口
在这里插入图片描述
前期运行时只设置了4567:4567,并没有5001:22的映射,所以需要给容器加入。

参考herehere进行配置,但是前提都是停止docker服务,否则设置好了启动配置也会自动失效,所以一定要先停止。
运行service docker stop
-sh: service: not found
运行systemctl start docker
-sh: systemctl : not found
查原因如下
由于上面查询的操作系统版本是centos 6.5我们使用service docker stop停止容器服务,重点:(/etc/init.d/docker stop也可)
centos 7之后改变服务的启动和关闭方式,可以使用命令systemctl stop docker来关闭
设置操作后,重新启动,采用docker ps查看容器
在这里插入图片描述
操作成功!,显示了0.0.0.0:4567->4567/tcp, 0.0.0.0:5001->22/tcp,两个端口

四.修改密码

连接过程经常需要设置密码
docker切换root不需要,采用sudo su
Image需要用户名:root;密码:123456.可以采用passwd设置
docker本身ssh需要用户名:docker;密码:tcuser,可改为1234567等。
连接ssh后,设置自启动
采用uname -a (Linux查看版本当前操作系统内核信息),然后根据参考here查阅启动位置,修改bash.bashrc文件,在最后一行加上:

 /etc/init.d/ssh start

即可实现docker容器开机自动启动ssh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值