使用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 3 days ago 199MB
4.启动centos容器
$ docker run -it centos /bin/bash
5.安装sshd服务
[[email protected] /]# yum install passwd openssl openssh-server -y
启动sshd服务报如下错误:
[[email protected] /]# /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 2048 -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服务
[[email protected] /]# /usr/sbin/sshd -D
[1] 85
安装网络工具包:yum install net-tools
使用netstat命令查看端口:netstat -nlp
可以看到,容器的22端口即SSH服务的默认监听端口处于监听状态。
8.使用ssh-keygen命令生成公钥私钥信息
[[email protected] /]# 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
[[email protected] sbin]# passwd root Changing password for user root. New password: ##输入:aaaa [[email protected] 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服务
[[email protected] ~]# yum install vim ##安装vim编辑器 [[email protected] ~]# cd ~ [[email protected] ~]# pwd /root [[email protected] ~]# vim run.sh run.sh内容如下: #!/bin/bash /usr/sbin/sshd -D [[email protected] ~]# 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
注意:[[email protected] ~]# 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
6781.html
架构架构师架构设计相关文章
- linux系统安装yarn,centos安装yarn
- CentOS 在VMware下配置网络
- centos环境搭建postfix邮件服务
- 在centos中安装mysql_linux下pycharm使用
- centos部署ftp服务_文件服务器搭建
- CentOS 7将nginx服务添加开机启动
- linux命令行移动文件_centos移动文件到指定目录
- 【图文教程】Centos单机安装Redis
- (2 / 3)CentOS搭建K8s微服务20条
- 微系列:8、在Centos系统中,搭建Skywalking服务
- 详解CentOS 7 引导过程与服务管理
- 教你如何在centos 7 安装卸载apache(httpd)服务的方法
- centos 6.5下安装oracle 11gR2与Oracle自动启动的配置
- CentOS 7.6 Telnet服务搭建过程(Openssh升级之战 第一任务备用运输线搭建)
- 解决CentOS 7升级Python到3.6.6后yum出错问题总结
- Centos步骤简明教程:安装Oracle 11g(centos安装oracle11g)
- 如何在Centos上安装python3.4详解编程语言
- 卸载CentOS上的MySQL服务(centos卸载mysql)
- 在CentOS 6.0 上安装LAMP服务器( Apache2 + PHP5 + MySQL)
- CentOS 7.4 发布 安全稳定的 Linux 发行版
- Facebook员工的Fedora Linux桌面开始逐渐换用CentOS Stream
- 如何在CentOS/RHEL上设置SSH免密码登录
- 使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS
- 怎么安装CentOS下MySQL的安装教程(centos里mysql)
- Centos下安装MySQL简易指南(centos选mysql)
- 配置CentOS下MySQL安装与配置指南(centos中mysql)
- CentOS与MySQL深入探讨(cemtos mysql)
- centos下mysql主从复制设置详解