在docker 容器开启ssh , 并映射22端口到物理载体机上以使外网访问
1. 运行某镜像以启动容器
docker run -it -p 127.0.0.1:5000:22 c7fe6d9267f8 /bin/bash
-p 为指定端口, 127.0.0.1 为映射到的物理载体机的IP, 5000 为物理载体机的IP, 22 为容器的端口。
上面的命令运行容器后,将容器的22端口映射到物理实体机的 127.0.0.1:5000 上。
如果物理机有多个网卡,多个网段的话,指定物理机的IP可能比较麻烦,可以使用下面命令:
docker run -it -p 5000:22 c7fe6d9267f8 /bin/bash
5000 为物理机的ip端口,这里不限定物理机的那个IP地址。
22 为容器的端口。
2. 启动容器后,更新源
apt-get update

3. 在容器上安装并配置ssh 服务
进入容器后,ssh登录 物理载体机,报错

说明,ssh服务没有完全安装或启动。
安装 ssh server :
apt-get install openssh-server

发现已经安装,需要启动服务。
启动容器的ssh服务:
启动sshd:
/usr/sbin/sshd -D &
然后更改密码:
passwd

物理机上 ssh 登入容器,成功。
ssh -p 5000 root@192.168.11.206

4. 编写 sshd 启动脚本,以便以后使用。
#!/bin/bash
/usr/sbin/sshd -D &

把此时的容器保存回镜像后可以:
这样的话,如果将该容器保存回镜像后,用命令:
docker run -it -p 5000:22 9e808f1164ab /bin/bash
运行容器的话,进入容器后 执行 /sshd.sh 文件就可以开启sshd 服务。
也可以直接运行:
-------------------------------------------------
将容器保存为镜像:
sudo docker commit 914ce23e23d5 new_pytorch:v0

查看现有仓库 镜像, 新生成的镜像可见,成功生成:

进入容器后,手动启动sshd服务。

---------------------------------------------------------------
需注意的是:
如果使用命令
docker run -it -p 5000:22 new_pytorch:v0 /sshd.sh
来运行容器的话,要求镜像中的 /sshd.sh 文件内容为:
#!/bin/bash
/usr/sbin/sshd -D
如果是:
#!/bin/bash
/usr/sbin/sshd -D &
那么容器会直接把sshd服务挂到后台,然后容器退出运行状态,从而终止掉。
----------------------------------------------------
参考:
https://www.cnblogs.com/ruanqj/p/7374544.html
如果配置 ssh 报错,参照:

在docker 容器开启ssh , 并映射22端口到物理载体机上以使外网访问的更多相关文章
- docker 容器开启ssh服务
ssh服务安装 安装ssh服务 #yum install openssh-server -y 安装passwd(修改密码需要) #yum install passwd -y 修改sshd_config ...
- docker安装redis并允许外网访问
拉取redis镜像 docker pull redis:3.2 本地新建redis配置文件 redis.conf ,写入以下内容 #允许外网访问bind 0.0.0.0 daemonize NO pr ...
- Docker CentOS / Ubuntu容器开启 SSH 服务
Docker CentOS / Ubuntu容器开启 SSH 服务 在CentOS容器内执行 yum install passwd openssl openssh-server -y # Ubuntu ...
- 配置docker容器上ssh无密登录
配置docker容器上ssh无密登录 1.修改所有容器中root账户密码 ssh到远程主机时,首次需要密码访问,因此需要修改root账号密码. 密码必须要8位以上字母数字混合. $>passwd ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- ssh 如何通过外网访问内网多台服务器
本帖子未验证: 我看到一个论坛,坛友发的一个问题 http://bbs.51cto.com/thread-934340-1.html 解决方法,我自己开了这个帖子写在这里. 首先你需要一个软件“Sec ...
- 浏览器/外网访问docker container中的hadoop
假设你制作了个docker的 hadoop的镜像,镜像名叫 hd_image,如果想在外网的浏览器中访问hadoop的50070和8088端口,则在启动镜像hd_image时, 脚本如下: docke ...
- linux centos7 开启 mysql 3306 端口 外网访问 的实践
第〇步:思路 3306 端口能否被外网访问,主要要考虑: (1)mysql的3306 端口是否开启?是否没有更改端口号? (2)mysql 是否允许3306 被外网访问? (3)linux 是否已经开 ...
- frp内网 穿透映射使内网svn可外网访问
起因 公司svn目前部署在内网服务器上,现在想在家中也可以使用,因此需要外网访问内网的工具 经过 使用过几个产品: utools,一个小巧的windows下的工具,内网映射只是它的一个小功能,支持tc ...
- docker kafka 外网访问不到
linux虚拟机中的kafka docker 容器外网显示: 原因: kafka的外网IP端口配置参数设置错误. 原-->设置了容器的IP端口. 改-->设置宿主机的ip以及宿主机上的端口 ...
随机推荐
- kvm链接克隆虚拟机迁移到openstack机器的实验
总结 如果是完整克隆的那种虚拟机,是可以直接在openstack使用的,如果镜像格式没问题的话. 因为kvm虚拟机大部分都是链接克隆出来的镜像,不可用直接复制使用,所以需要创建新的镜像文件 创建空盘: ...
- 动态生成的 select option 无法选中,设置值
使用jQuery的 .val('22') 给select 设置值时不生效. 原因:select是动态生成的,在DOM还没生成完之前就调用了.val('22'). 解决方法:动态生成的ajax请求改成同 ...
- SQL SERVER 2012的安装
1.将光盘镜像用虚拟光驱加载(WIN10自带虚拟光驱) 2.双击setup.exe 3.选择"安装"-"全新 SQL Server 独立安装或向现有安装添加功能" ...
- Vue学习:15.组件化开发
组件化开发 组件化开发是一种软件开发方法,它将应用程序拆分成独立的.可重用的模块,每个模块都被称为组件.这些组件可以独立开发.测试.维护和部署,从而提高了代码的可维护性.可扩展性和复用性.在前端开发中 ...
- 《Android开发卷——实时监听文本框输入》
在实际开发中,有时候会让用户发布一些类似微博.说说的东西,但是这个是有限制长度的,除了在文本输入框限制长度外,还要在旁边有一条提示还能输入多少个字的"友好提示". 1.文本框 ...
- 将链表以m长度为一组反转链表
一群友分享的阿里面试题 1.将head链表以m为组反转链表(不足m则不反转): 例子:假设m=3. 链表 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> ...
- redis查询 第1个数据库,而不是默认的第0个数据库
redis查询 第1个数据库,而不是默认的第0个数据库 spring.redis.database = 1 默认: spring.redis.database = 0 car-test:0>ge ...
- LiveCharts2:简单灵活交互式且功能强大的.NET图表库
前言 之前的文章中提到过ScottPlot.与oxyplot,这两个是比较常用的.NET图表库,今天介绍一款新的.NET图表库:LiveCharts2. LiveCharts2介绍 LiveChart ...
- 【题解】CatOJ C0458C 滑动窗口定期重构
标题 trick 的名字我也不知道是什么,就这样吧. 首先有显然的 dp 式子:\(f(i)=\min \{f(j) \times \max\{a_{j+1},\dots,a_i\}\}\).考虑怎么 ...
- OSI七层网络模型和TCP/IP四层模型
OSI七层网络模型 OSI: 开放系统互连参考模型是ISO制定的一个用于计算机或通信系统间互联的标准体系 OSI七层模型功能: 物理层: 七层模型的最底层,主要是物理介质传输媒介(网线或者无线),在不 ...