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 启动脚本,以便以后使用。

vim /sshd.sh
#!/bin/bash
/usr/sbin/sshd -D &
chmod 755 /sshd.sh
 
 
 

把此时的容器保存回镜像后可以:

这样的话,如果将该容器保存回镜像后,用命令:

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端口到物理载体机上以使外网访问的更多相关文章

  1. docker 容器开启ssh服务

    ssh服务安装 安装ssh服务 #yum install openssh-server -y 安装passwd(修改密码需要) #yum install passwd -y 修改sshd_config ...

  2. docker安装redis并允许外网访问

    拉取redis镜像 docker pull redis:3.2 本地新建redis配置文件 redis.conf ,写入以下内容 #允许外网访问bind 0.0.0.0 daemonize NO pr ...

  3. Docker CentOS / Ubuntu容器开启 SSH 服务

    Docker CentOS / Ubuntu容器开启 SSH 服务 在CentOS容器内执行 yum install passwd openssl openssh-server -y # Ubuntu ...

  4. 配置docker容器上ssh无密登录

    配置docker容器上ssh无密登录 1.修改所有容器中root账户密码 ssh到远程主机时,首次需要密码访问,因此需要修改root账号密码. 密码必须要8位以上字母数字混合. $>passwd ...

  5. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  6. ssh 如何通过外网访问内网多台服务器

    本帖子未验证: 我看到一个论坛,坛友发的一个问题 http://bbs.51cto.com/thread-934340-1.html 解决方法,我自己开了这个帖子写在这里. 首先你需要一个软件“Sec ...

  7. 浏览器/外网访问docker container中的hadoop

    假设你制作了个docker的 hadoop的镜像,镜像名叫 hd_image,如果想在外网的浏览器中访问hadoop的50070和8088端口,则在启动镜像hd_image时, 脚本如下: docke ...

  8. linux centos7 开启 mysql 3306 端口 外网访问 的实践

    第〇步:思路 3306 端口能否被外网访问,主要要考虑: (1)mysql的3306 端口是否开启?是否没有更改端口号? (2)mysql 是否允许3306 被外网访问? (3)linux 是否已经开 ...

  9. frp内网 穿透映射使内网svn可外网访问

    起因 公司svn目前部署在内网服务器上,现在想在家中也可以使用,因此需要外网访问内网的工具 经过 使用过几个产品: utools,一个小巧的windows下的工具,内网映射只是它的一个小功能,支持tc ...

  10. docker kafka 外网访问不到

    linux虚拟机中的kafka docker 容器外网显示: 原因: kafka的外网IP端口配置参数设置错误. 原-->设置了容器的IP端口. 改-->设置宿主机的ip以及宿主机上的端口 ...

随机推荐

  1. 编程语言界的丐帮 C#.NET 国密数字信封 民生银行

    民生银行的库DLL只有C版本和JAVA版本.按着JAVA版本做的C# 实现. 重点内容. 1.数字信封就是 CmsEnvelopedData Der编码后转BASE64 2.重点类:ContentIn ...

  2. 安装sql 2012 时遇到“需要更新的以前的 Visual Studio 2010 实例。”规则失败。

    "需要更新的以前的 Visual Studio 2010 实例."规则失败.此计算机安装了需要 Service Pack 1 更新的 Visual Studio 2010,必须安装 ...

  3. LINQ to Entities does not recognize the method 'System.String ToString()' method

    LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method ca ...

  4. OpenWrt安装配置Tailscale

    什么是tailscale? Tailscale就是基于Wireguard的一个联网工具,无需公网地址,通过去中心化,实现各个节点之间点对点的连接.配置简单友好,支持的各类平台和客户端. 相比较其他组网 ...

  5. es6数组解构的原理初探

    原理 以前只用过数组解构为数组,或者将其他类数组解构为数组,但是还不知道对象为什么不能解构为数组 后面学习到了Symbol.iterator属性以后才知道,只要一个对象是可迭代的,那它就可以迭代为数组 ...

  6. Github上优秀的.NET Core开源项目的集合【转】

    一般 ASP.NET Core Documentation - 官方ASP.NET核心文档站点. .NET Core Documentation - .NET Core,C#,F#和Visual Ba ...

  7. SOP页面跳转设计 RAS AES加密算法应用跨服务免登陆接口设计

    SOP页面跳转设计 RAS AES加密算法应用跨服务免登陆接口设计 SOP,是 Standard Operating Procedure三个单词中首字母的大写 ,即标准作业程序,指将某一事件的标准操作 ...

  8. linux日志查询less及堡垒机查询日志方法

    方法1tail -f orderFile.log | grep "关键字" postman接口请求的时候,关注控制台对关键字过滤的打印输出. 方法2less 文件名称/ 关键字n ...

  9. 关于Compilation failed: internal java compiler error的解决方法(Idea)

    关于Compilation failed: internal java compiler error的解决方法(Idea) idea编译项目时出现java: Compilation failed: i ...

  10. 常用RAID级别简介

    RAID不同等级的两个目标: 1. 增加数据可靠性 2. 增加存储的读写性能 RAID级别: ​ RAID-0: 是以条带的形式将数据均匀分布在阵列的各个磁盘上 ​ 优点:读写性能高,不存在校验,不会 ...