使用commit方式构建具有sshd服务的centos镜像
一般我们是通过SSH服务来管理服务器的,但是现在很多Docker镜像不带SSH服务,那我们该如何来管理这些容器呢?现在我们通常使用attach和nsenter工具。但是都无法解决远程管理容器的问题,当我们需要远程管理容器的时候,就需要SSH的支持了。
1.搜索centos
$ docker search centos -s 10
备注:STARS数最多,OFFICIAL是"[OK]"的这个就是官方的centos镜像。
2.下载centos
$ docker pull centos
3.查看镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest e934aafc2206 days ago 199MB
4.启动centos容器
$ docker run -it centos /bin/bash
5.安装sshd服务
[root@52162961c0e2 /]# yum install passwd openssl openssh-server -y
启动sshd服务报如下错误:
[root@52162961c0e2 /]# /usr/sbin/sshd -D
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available -- exiting.
6.执行以下三条命令:
#ssh-keygen -q -t rsa -b -f /etc/ssh/ssh_host_rsa_key -N ''
#ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
#ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
7.重新启动sshd服务
[root@52162961c0e2 /]# /usr/sbin/sshd -D &
[1] 85
安装网络工具包:yum install net-tools
使用netstat命令查看端口:netstat -nlp
可以看到,容器的22端口即SSH服务的默认监听端口处于监听状态。
8.使用ssh-keygen命令生成公钥私钥信息
[root@52162961c0e2 /]# ssh-keygen -t rsa -P ''
执行完成之后在/root/.ssh/目录下会有id_rsa和id_rsa.pub两个文件生成。
9.粘贴 52162961c0e2 容器的/root/.ssh/id_rsa.pub公钥内容:
把上面的公钥内容拷贝到192.168.1.160主机的/root/.ssh/目录下的authorized_keys文件中,并将authorized_keys文件权限改为600:
$ chmod 600 authorized_keys
通过192.168.1.160主机ssh远程登录52162961c0e2容器
10.修改密码passwd root
[root@52162961c0e2 sbin]# passwd root
Changing password for user root.
New password: ##输入:aaaa
[root@52162961c0e2 sbin]# passwd root
Changing password for user root.
New password: ##输入:aaaa
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully
创建一个可执行文件run.sh用于启动ssh服务
[root@52162961c0e2 ~]# yum install vim ##安装vim编辑器
[root@52162961c0e2 ~]# cd ~
[root@52162961c0e2 ~]# pwd
/root
[root@52162961c0e2 ~]# vim run.sh
run.sh内容如下:
#!/bin/bash
/usr/sbin/sshd -D
[root@52162961c0e2 ~]# chmod +x run.sh
11.exit退出容器
12.通过commit执行提交命令,保存镜像
$ docker commit -m "add sshd" -a "ruthless" 52162961c0e2 sshd:v1
sha256:0b0c0adfc3d449132a38530afe06c3a12df2650f81e53169e60b51046215bd39
13.启动新的容器
使用sshd:v1镜像,启动新的容器,并添加映射的端口20022-->22,20022是宿主机上的端口,22是容器中SSH服务监听的端口
$ docker run -d -p 20022:22 --name centos_sshd sshd:v1 /root/run.sh
$ docker ps
注意:[root@rocketmq-nameserver4 ~]# docker run -d -p 20022:22 --name centos_sshd sshd:v1 /root/run.sh
docker: Error response from daemon: Conflict. The container name "/centos_sshd" is already in use by container "e0a9d7ad00b9cd18dfa5499567a4ad14d1a8ba4838ca49186f1256e7cf312338". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
解决方案:
$ docker stop centos_sshd
$ docker rm centos_sshd
14.测试
$ ssh 192.168.1.160 -p 20022 ##登陆密码为aaaa
使用commit方式构建具有sshd服务的centos镜像的更多相关文章
- 利用Dockerfile文件创建带有sshd服务的centos镜像
利用Dockerfile文件创建带有sshd服务的centos镜像 标签:dockerfile 1.安装docker并启动docker,不在赘述 2.创建使用Dockerfile安装sshd服务的目录 ...
- 构建一个拥有sshd服务的docker镜像
不直接描述结果,通过一个过程探究如何写一个 Dockerfile 一.环境 虚拟机CentOS7.4,Docker1.13.1 二.尝试步骤 1.下载基础镜像 docker pull alpine:3 ...
- 基于CentOS的SSHD服务的Docker镜像
原文地址 1.Dockerfile文件 FROM registry.aliyuncs.com/acs-sample/centos:6 MAINTAINER xuqh "xqh_163@163 ...
- 两种方式创建支持SSH服务的docker镜像
方法一:基于commit命令创建 1.首先,从docker的源中查看我们需要的镜像,本案例中使用Ubuntu作为基础镜像. # federico @ linux in ~ [16:57:38] $ s ...
- 添加ssh服务构建新镜像-docker commit 方式01
添加ssh服务构建新镜像-docker commit 方式 1:docker commit构建自定义镜像---一般不推荐使用这种方式构建新镜像 1:ubuntu基础镜像下载 ubuntu@ubuntu ...
- 微服务架构:构建PHP微服务生态
微服务架构:构建PHP微服务生态 Linux系统技术交流QQ群(1675603)验证问题答案:刘遄 导读 诞生于 2014 年的“微服务架构”,其思想经由 Martin Fowler 阐述后,在近 ...
- SSHD服务搭建
SSH协议:安全外壳协议.为Secure Shell 缩写.SSH为建立在应用层和传输层基础上的安全协议. 1.检查SSH服务端安装情况 [root@rhel6_84 ~]# rpm -qpi / ...
- 如何通过JavaScript构建Asp.net服务端控件
摘要 虽然ASP.NET的服务器控件一直被大家所诟病,但是用户控件(ACSX)在某些场景下还是非常有用的. 在一些极特珠的情况下,我们会使用JavaScript动态的构建页面中的控件,但假设遇到了我要 ...
- 开源服务专题之------sshd服务安装管理及配置文件理解和安全调优
本专题我将讨论一下开源服务,随着开源社区的日趋丰富,开源软件.开源服务,已经成为人类的一种公共资源,发展势头可谓一日千里,所以不可不知.SSHD服务,在我们的linux服务器上经常用到,很重要,涉及到 ...
随机推荐
- 使用U盘安装CentOS7
为了在公司的旧笔记本电脑上安装centos供自己学习使用折腾了两天,终于在看了https://www.cnblogs.com/yeeo1/p/7306611.html这篇博文后装上了, 以下内容为转载 ...
- (转)经验分享:CSS浮动(float,clear)通俗讲解
文章转自:https://www.cnblogs.com/iyangyuan/archive/2013/03/27/2983813.html 很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身 ...
- php数组函数有哪些操作?php数组函数的应用
PHP 的数组是一种很强大的数据类型,与此同时 PHP 内置了一系列与数组相关的函数可以很轻易的实现日常开发的功能.但是我发现好像很多小伙伴都忽略了内置函数的作用(比如我自己就编写过一些有关数组操作的 ...
- [BeijingWc2008]雷涛的小猫
--BZOJ1270 Description 雷涛的小猫雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的). 在他的照顾下,小猫很快恢复了健康 ...
- trinitycore 魔兽服务器源码分析(二) 网络
书接上文 继续分析Socket.h SocketMgr.h template<class T>class Socket : public std::enable_shared_from_t ...
- zookeeper 服务挂掉重启后,dubbo 服务是不会自动重新注册上的
今天遇到一个问题: 系统初始有两个dubbo 服务 , A 和 B , 都是正常注册到zookeeper 上的, 但是zookeeper 服务机房 断电导致 服务宕机, 那就重启吧. 一切正常. 但是 ...
- Innodb IO优化-配置优化
作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 对于数据库来讲 ...
- kbmmw中向服务器端传递对象的一种简单方式
运行环境:delphi 10.2+kbmmw 5.6.20 在kbmmw 的老版本中,要向服务器传送一个本地的对象,一般都需要进行一些转换,例如通过序列化的方式. 在新版的kbmmw中这一切都变的很简 ...
- ABP框架系列之三十一:(Localization-本地化)
Introduction Any application has at least one language for user interface. Many applications have mo ...
- (PMP)第9章-----项目资源管理
9.1 规划资源管理 数据表现: 1.层级型(高层次的角色):工作分解结构,组织分解结构,资源分解结构 2.责任分配矩阵:RAM,RACI,执行,负责,咨询,知情(只有一个A) 3.文本型(记录详细职 ...