如何在centos7中使用docker创建一个支持ssh连接的容器

以下内容已有现成的,这里借用下这哥们的帖子https://www.cnblogs.com/caidingyu/p/10642158.html

并附上自己理解

1.拉取centos7.4镜像(由于7.4目前是最稳定的版本,所以推荐使用centos7.4)

ps:最新版已到8,可去https://hub.docker.com/查阅

1
docker pull centos:7.4.1708

2.执行以下命令查看已有的镜像

1
docker images

3、基于centos镜像,创建一个名为centos7ssh的容器并进入容器(这里名称可以自定义)

ps:启动时 /bin/bash 表示命令行path。该path环境变量,自带的有:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

 
1
docker run -it --name centos7ssh centos:7.4.1708 /bin/bash

4、进入容器后,安装ssh服务端和客户端,服务端能让其他主机远程登录本机,客户端能让本机远程登录其他主机

ps:docker安装的centos没有passwd命令,但是你用whereis passwd依然可以找到位置。所有建议你安装ssh的passwd命令

1
yum -y install passwd openssl openssh-server openssh-clients

ps:我自己安装yum install openssh-server 后。无需走5,6步

5.创建 /var/run/sshd/目录,要不然sshd服务启动会报错

1
mkdir /var/run/sshd/

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

可以进入sshd_config文件中去修改,也可以使用命令:

1
sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

ps:你用密码登录就无需步骤7

7.创建公私密钥,输入命令后,直接按两次enter键确认就行了

1
2
3
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

8.完成上述几步后,可以开启ssh服务了(&表示后台启动)

1
/usr/sbin/sshd -D &

9.此时使用命令ps -ef | grep sshd  便可以看到

10.查询22端口是否处于监听状态

1
yum -y install lsof
1
lsof -i:22

11.修改root密码

1
passwd

12.测试

输入命令ssh localhost,然后输入之前设置的root密码

上图中可以看到已经登录到本机了,也就说容器中的主机拥有了ssh远程登录其它主机的能力,当然你也可以登录其他主机。

要退出的话,输入命令exit即可

13.如何配置外部客户端访问docker里的centos7.4容器

获取容器的ID等端口映射信息

1
docker ps -a

提交容器成为新的镜像,例如叫做sshd_centos7.4,输入

1
docker commit 容器ID sshd_centos7.4

启动这个镜像的容器,并映射本地的一个闲置的端口(例如15000)到容器的22端口,并启动容器的sshd(只要端口不冲突可以同时启动多个容器,如下图)

1
docker run -d -p 15000:22 sshd_centos7.4 /usr/sbin/sshd -D

现在打开新的终端,输入ssh root@宿主机IP地址 -p 15000,如果能连接成功,会要求输入密码的,输入刚才passwd命令设置的root账户密码就可以进入容器的终端了

如果连接失败,请检查防火墙是否未开放该端口。

参考文档:https://www.cnblogs.com/whutxldwhj/p/6427530.html

https://blog.csdn.net/u013140345/article/details/79777311

https://blog.csdn.net/weipeng19861130/article/details/79006555

以下为网友提供的方法还未验证是否可用,可自行验证

1
2
3
4
5
6
7
8
9
10
11
12
docker pull centos:7.2.1511    //也可以不指定版本,默认最新latest
docker run -t -i centos:7.2.1511 /bin/bash  //启动并进入docker 容器
 
yum install wget                    
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
yum cleal all
yum install passwd
yum install openssh-server        #安装ssh服务端
echo 'passw0rd' passwd root    //修改root密码
 
docker commit [容器ID] [新镜像名]   //使用commit 提交,简单的配置可以使用dockerfile创建镜像,但是要配置环境比较复杂,还是需要用到commit
docker run -d -p 220:22 c7ssh /usr/sbin/sshd -D      //启动容器,并绑定容器端口22到宿主主机, 可以有多个-p 绑定多个端口,例如22端口让远程客户端连接,8080 可以访问容器内tomcat

总结:起初我安装的是ubuntu,当然ubuntu的image很小只有80M左右。但是他仅仅只是一个内核,什么都没有,自己需要安装的东西太多。直接换的centos

docker 安装linux centos 环境的更多相关文章

  1. 安装docker报错:https://download.docker.com/linux/centos/7/i386/stable/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"

    如题,执行docker安装命令报错: [root@centos ~]# yum install docker-ce Loaded plugins: fastestmirror, security Se ...

  2. Linux/CentOS环境下如何安装和配置PhantomJS工作环境

    PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, C ...

  3. 在虚拟机(VMware)中安装Linux CentOS 6.4系统(图解) 转

    一.下载最新版本Linux CentOS     1.打开官网地址:http://www.centos.org/,点击Downloads->Mirrors         2.点击CentOS ...

  4. docker安装教程-centos

    Docker 要求CentOS 系统的内核版本在3.10以上,查看本页面的前提条件来验证你的CentOS 版本是否支持Docker . 1.通过uname -r 命令查看你当前的内核版本 uname ...

  5. 如何通过VMware安装Linux CentOS 7.7系统

    如何在Vmware安装Linux CentOS 7.7系统,并且是最小化安装.之后进行必要的配置修改,并实现基础优化.最后做一个快照. 安装Linux CentOS 7.7 安装要求:安装后的虚拟机用 ...

  6. Docker安装 Ubuntu Centos

    Ubuntu 安装Dokcer 1. 删除旧版本Docker安装包和依赖项 sudo apt-get remove docker docker-engine docker.io containerd ...

  7. 如何用docker安装laravel开发环境

    如何用docker安装laravel开发环境 看laravel框架的官方文档安装部分时,发现需要安装特别多软件,估计还有许多复杂的配置,官方推荐使用Laravel Homestead虚拟机进行安装,但 ...

  8. VMware下安装Linux(Centos)步骤

    VMware下安装Linux(Centos)步骤 准备步骤:(安装软件教程采用 VMware 9 .Centos6.5 为例) 启动VMware的画面 点击File--->New Virtua ...

  9. Docker 安装入门 Centos Linux安装Docker 部署mysql

    这次购买了阿里云云服务器,并且安装了Centos 7.5 学习使用Docker, 确认版本信息 Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上. Dock ...

随机推荐

  1. STL——容器(Map & multimap)的插入与迭代器

    1. 容器(Map & multimap)的插入 map.insert(...);    //往容器插入元素,返回pair<iterator,bool> map中插入元素的四种方式 ...

  2. Map、Debug追踪

    Map集合   概述   现实生活中,我们常会看到这样一种集合:IP地址和主机名,身份证号和个人,系统用户名与系统用户对象等,这种一一对应的关系,我们把它称之为映射.Java当中提供了专门的集合类用来 ...

  3. 【Django admin 中文配置】

    打开settings.py文件,找到语言编码.时区的设置项,将内容改为如下: [其中 zh-Hans是简体中文 zh-Hant是繁体中文] LANGUAGE_CODE = 'zh-Hans' # LA ...

  4. md5 的基本使用

    import hashlib def make_password(password): md5=hashlib.md5() # 实例化 md5.update(password.encode(encod ...

  5. Excel优雅导出

    流程 原来写过一篇文章,是介绍EasyExcel的,但是现在有些业务需要解决,流程如下 1.需要把导出条件转换成中文并存入数据库 2.需要分页导出 3.需要上传FTP或者以后上传OSS 解决方案 大体 ...

  6. JavaSE06-面向对象

    1. 类和对象 1.1 类和对象的理解 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象. 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象 类是对象的数据类型,类是具有相同属性和 ...

  7. 保姆级教程,带你认识大数据,从0到1搭建 Hadoop 集群

    大数据简介,概念部分 概念部分,建议之前没有任何大数据相关知识的朋友阅读 大数据概论 什么是大数据 大数据(Big Data)是指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需 ...

  8. 用Python从头开始构建神经网络

    神经网络已经被开发用来模拟人脑.虽然我们还没有做到这一点,但神经网络在机器学习方面是非常有效的.它在上世纪80年代和90年代很流行,最近越来越流行.计算机的速度足以在合理的时间内运行一个大型神经网络. ...

  9. kickstart+pxe部署

    ------------恢复内容开始------------ kickstart 通过网络安装系统 ----pxe kickstart,cobbler pex 预启动执行环境 通过网络接口启动计算机, ...

  10. CentOS7下常用安装服务软件源码编译安装方式的介绍

    简介:介绍源码编译安装软件包的管理 源码安装优点:编译安装过程,可以设定参数,指定安装目录,按照需求进行安装,指定安装的版本,灵活性比较大. 源码安装的缺点:需要对依赖包一个一个的进行安装,不敢随便升 ...