以centos为基础,目的使用ssh服务远程连接docker容器。

环境:宿主机centos7(宿主机ip地址为192.168.164.130),直接搜索docker的centos镜像,下载最新版本。

[root@localhost ~]# docker search -s 15 centos

[root@localhost ~]# docker pull docker.io/centos

使用centos镜像启动一个容器centos_ssh

[root@localhost ~]# docker run -it --name=centos_ssh centos /bin/bash

进入容器之后,升级并安装ssh组件,命令如下:

[root@ fdb751de5762 ~]# yum -y update

[root@ fdb751de5762 ~]# yum -y install openssh-server

[root@ fdb751de5762 ~]# vi /etc/ssh/sshd_config

编辑sshd的配置文件/etc/ssh/sshd_config,将其中的UsePAM yes改为UsePAM no

在宿主机中生成密钥对,把生成的公钥文件中的内容复制到容器的/root/.ssh/authorized_keys里,如果无对应目录则手动创建。

[root@localhost ~]# ssh-keygen -t rsa

[root@localhost ~]# cat /root/.ssh/id_rsa.pub

进入centos_ssh容器

[root@ fdb751de5762 ~]# mkdir .ssh

[root@ fdb751de5762 ~]# cd .ssh

[root@ fdb751de5762 .ssh]# vi authorized_keys

[root@ fdb751de5762 .ssh]# cat authorized_keys

设置容器root密码

[root@ fdb751de5762 ~]# echo "root:123456"|chpasswd

创建 /var/run/sshd/目录,要不然sshd服务启动会报错
[root@ fdb751de5762 ~]# mkdir /var/run/sshd/

[root@
fdb751de5762 ~]# /usr/sbin/sshd -D &

WARNING: 'UsePAM no' is not supported in
Red Hat Enterprise Linux and may cause several problems.(1)
Could not load host key: /etc/ssh/ssh_host_rsa_key(2)

Could not load host key:
/etc/ssh/ssh_host_ecdsa_key

Could not load host key:
/etc/ssh/ssh_host_ed25519_key

启动时会提示以上信息,(1)表示:修改了sshd_conf文件中的UsePAM yes改成UsePAM no

(2)表示:没有主机的公私秘钥,重新生成密钥

[root@fdb751de5762
~]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

[root@fdb751de5762
~]# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key

[root@fdb751de5762
~]# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

[root@fdb751de5762
~]# /usr/sbin/sshd -D &

[root@fdb751de5762
~]# ps -ef | grep sshd

root          1     
0  0 22:16 ?        00:00:00 /usr/sbin/sshd -D

root        
33      7  0 22:37 pts/0    00:00:00 grep --color=auto sshd

[root@fdb751de5762
~]# yum -y install lsof

[root@fdb751de5762
~]# lsof -i:22

[root@
fdb751de5762 ~]# vi run.sh

#/bin/bash

/usr/sbin/sshd -D &

[root@fdb751de5762
~]# chmod 755 run.sh

[root@fdb751de5762
~]# exit

 

在宿主机中使用commit命令将centos_ssh创建为sshd_centos镜像

[root@localhost
~]# docker commit fdb751de5762 sshd_centos

运行该镜像并启动sshd服务

[root@localhost
~]# docker run -p 10022:22 -d sshd_centos /usr/sbin/sshd –D

[root@localhost
~]# docker ps

说明:10022是宿主机的和容器的通讯端口,外面窗口(局域网)通过访问地址

ssh root@宿主机IP -p 10022(IP和端口之间有空格,不是:)就能进入容器,如果没有设置ssh免密登录,则输入刚才为容器的root用户设定的密码。

[root@localhost
~]# ssh root@192.168.134.130 -p 10022

如上所示,成功进入容器。

如果碰见下述错误

则可以执行下述指令#mv /root/.ssh/known_hosts /tmp

docker基于commit命令创建支持ssh服务的镜像的更多相关文章

  1. docker基于Dockerfile命令创建支持ssh服务的镜像

    首先,创建一个sshd_centos工作目录: [root@localhost ~]# mkdir sshd_centos [root@localhost ~]# cd sshd_centos [ro ...

  2. ubuntu-docker入门到放弃(八)创建支持SSH服务的镜像

    我们知道进入docker容器可以使用attach.exec等命令来操作和管理,但是如果需要远程登录并管理容器,就需要ssh服务的支持了. 1.基于commit命令创建 docker提供了commit命 ...

  3. 创建支持SSH服务的镜像

    一.基于commit命令创建 docker commit CONTAINER [REPOSITORY [:TAG]] 1.使用ubuntu镜像创建一个容器 docker run -it ubuntu ...

  4. 使用Dockerfile创建支持SSH服务的镜像

    1.前面我们学习了使用Dockerfile,那接下来我们就用Dockerfile创建一个支持SSH服务的镜像. 2.首先创建一个目录ssh_centos [root@rocketmq-nameserv ...

  5. docker如何创建支持SSH服务的镜像

    一般情况下,Linux系统管理员通过SSH服务来管理操作系统,但Docker的很多镜像是不带SSH服务的,那么我们怎样才能管理操作系统呢?在第一部分中我们介绍了一些进入容器的办法,比如用attach. ...

  6. Docker(2):使用Dockerfile创建支持SSH服务的镜像

    1.创建工作目录 # mkdir sshd_ubuntu # ls 在其中,创建Dockerfile和run.sh文件 # cd sshd_ubuntu/ # touch Dockerfile run ...

  7. Docker创建支持ssh服务的容器和镜像

    原文链接:Docker创建支持ssh服务的容器和镜像 1. 这里使用的centos作为容器,所以首先下载centos的images # sudo docker pull centos 2. 下载后执行 ...

  8. 两种方式创建支持SSH服务的docker镜像

    方法一:基于commit命令创建 1.首先,从docker的源中查看我们需要的镜像,本案例中使用Ubuntu作为基础镜像. # federico @ linux in ~ [16:57:38] $ s ...

  9. Docker使用Dockerfile创建支持ssh服务自启动的容器镜像

    原文链接:Docker使用Dockerfile创建支持ssh服务自启动的容器镜像 1. 首先创建一个Dockerfile文件.文件内容例如以下 # 选择一个已有的os镜像作为基础 FROM cento ...

随机推荐

  1. Linux网络子系统之---- PHY 配置

    MII即媒体独立接口,也叫介质无关接口. 它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1). 数据接口包括分别用于发送器和接收器的两条独立信道.每条信道都有自己的数据.时钟和控制信号. ...

  2. Mac下配置Hive环境

    在配置Hive环境之前,需要Hadoop环境. 安装Hive 点击下载 下载结束后,会有一个.tar文件,使用以下命令解压该文件. tar -zxvf 要解压的tar包 解压完成后如下 修改Hive配 ...

  3. shell 将输入的字符转换成大写

    test.sh #!/bin/bash while read line do echo $line | tr '[a-z]' '[A-Z]' done 输出 dddddd DDDDDD sssss S ...

  4. android 优秀框架整理

    程序员界有个神奇的网站,那就是github,这个网站集合了一大批优秀的开源框架,极大地节省了开发者开发的时间,在这里我进行了一下整理,这样可以使我们在使用到时快速的查找到,希望对大家有所帮助! 1. ...

  5. vue-router详解

    对于单页应用,官方提供了vue-router进行路由跳转的处理,本篇主要也是基于其官方文档写作而成. 安装 基于传统,我更喜欢采用npm包的形式进行安装. npm install vue-router ...

  6. 跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击

    跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击 一.总结 一句话总结:比如用户留言功能,用户留言中写的是网页可执行代码,例如js代码,然后这段代码在可看到这段留言的不同一户的显示上就会 ...

  7. 导入arr包

    提起项目的aar包 导入目标项目中 添加依赖 

  8. Backbone设计思路和关键源码分析

    一. Backbone的江湖地位: backbone作为一个老牌js框架为大规模前端开发提供了新的开发思路:前端MVC模式,这个模式也是前端开发演变过程中的一个重要里程碑,也为MVVM和Redux等开 ...

  9. Spartan6上软核系统自定义外设调用AXI Stream FFT经验

    这几天希望能在Spartan系列新品xc6slx16csg324-2运行带有FFT的软核处理系统,基本系统早就搭建好了.需要做的就是建立一个封装有Xilinx提供的FFT IP的自定义外设.由于Xil ...

  10. 20181009-6 选题 Scrum立会报告+燃尽图 05

    Scrum立会报告+燃尽图(05)选题 此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2195 一.小组介绍 组长:刘莹莹 ...