Docker 为镜像添加SSH服务--基于commit命令


前言

本文主要介绍学习docker的过程中为容器添加ssh服务的的方法,主要用于记录和分享,以备后续使用的时候查看。
本次以Ubuntu镜像作为基础镜像。


1. 获取Ubuntu镜像

获取Ubuntu镜像,并创建一个容器:
$ docker pull ubuntu:18.04
$ docker run -it ubuntu:18.04 bash
root@mc1432dk8uhg:/#

2. 检查软件源,更新软件源信息

root@mc1432dk8uhg:/# apt-get update

3.安装和配置SSH服务

这里选择了主流的openssh-server作为服务端。

root@mc1432dk8uhg:/# apt-get install openssh-server

如果需要正常启动SSH服务,则目录/var/run/sshd必须存在。下面手动创建它,并启动SSH服务:

root@mc1432dk8uhg:/# mkdir -p /var/run/sshd
root@mc1432dk8uhg:/# /usr/sbin/sshd -D &
[1] 2243

此时查看容器的22端口,可见此端口已经处于监听状态:

root@mc1432dk8uhg:/# netstat -tunlp
Active Internet connections (only servers)
Proto  Recv-Q  Send-Q Local Address	Foreihn Address	State  PID/Program name
tcp			0		0 0.0.0.0:22	0.0.0.0:*		LISTEN -
tcp6		0		:::22			::::*			LISTEN -

修改SSH服务的安装登录限制,取消pam登录限制:

root@mc1432dk8uhg:/#  sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd

root目录下创建.ssh目录,并复制需要登录的公钥信息到authorized_keys文件中:

root@mc1432dk8uhg:/# mkdir root/.ssh
root@mc1432dk8uhg:/# vi /root/.ssh/authorized_keys

在客户端主机(也就是将来要访问容器的主机上)查看.ssh文件夹下有没有id_rsa.pub文件,如果 没有则需要执行

[root@pc ~]# ssh-keygen

命令生成,此命令执行过程中若不想输入密码,可以一路回车。然后查看id_rsa.pub文件内容复制到authorized_keys中:

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

如果需要添加多个客户主机公钥到authorized_keys中,依次复制粘贴进去即可。
创建自动启动SSH服务的可执行文件run.sh(部署容器的时候会用到),并添加可执行权限:

root@mc1432dk8uhg:/# vi /run.sh
root@mc1432dk8uhg:/# chmod +x run.sh

run.sh脚本内容如下:

#!/bin/bash
/usr/sbin/sshd -D

最后退出容器:

root@mc1432dk8uhg:/# exit

4. 保存镜像

将所推出的容器用docker commit命令保存为一个新的sshd:ubuntu镜像。

$ docker commit mc1432 sshd:ubuntu
$ docker images

5. 使用镜像

启动容器,并添加端口映射10022 -->>22.其中10022是宿主机端口,22是容器的SSH服务服务监听端口:

$ docker run -p 10022:22 -d sshd:ubuntu /run.sh
$ docker ps

在宿主机或者其他已经添加公钥的主机上,可以通过访问10022端口来登录容器:

ssh 192.168.1.200 -p 10022

总结

除此之外还可以使用Dockerfile来创建,先挖个坑,等以后有时间再来填~

欢迎各位大佬批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值