docker容器/linux主机之间实现SSH互通

本文记录了如何在Docker容器与Linux主机之间实现SSH互通,包括创建自定义网段、安装SSH服务、配置SSH设置、生成RSA密钥对以及设置授权,以实现多个容器间的SSH互访。通过这种方法,可以在有限的测试环境中进行多实例测试,例如搭建MySQL集群。
摘要由CSDN通过智能技术生成

2019-11.13更新

经验证,以下方案不仅仅适用于docker,也适用于x86 linux主机或者树莓派等arm架构的linux


公司业务上要求增加数据库,当前生产环境用的是MySQL-cluster集群,非常吃内存且它的高并发性能在新的需求上用不到,要求新搭建一套新的MySQL集群,在此之前要求做一份MySQL各个集群性能测试报告,由于我只有一台测试机,所以要实现多个集群的测试,我准备通过docker实现。PXC的dockers集群搭建之前已经纪录过,目前准备搭建MHA,实现MHA的前提是首先要实现节点之间的ssh互通,废话说多了,这里纪录下docker容器间的SSH互通实现。

 

之前没玩过,所以测试阶段docker-file就没写,从commit一步一步来

先pull一个centos镜像,这里要特殊说明一点,pull centos镜像的时候记得拉去centos 6系列版本,在7系列版本中,安装ssh服务后,启动ssh会报错权限不足,

ssh-copy-id no identities found error

Failed to get D-Bus connection: Operation not permitted

这两个错误stackoverflow上说是centos7.2官方镜像有变更导致,然而我试了7.5还是有这个问题,时间不等人,我就换成了6.0版本作为基础镜像,相关报错讨论可参考:

https://stackoverflow.com/questions/22530886/ssh-copy-id-no-identities-found-error

 要想使用centos7系列镜像,在容器启动的时候必须使用如下命令进行创建:

 docker run -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name mha-0 --privileged=true -p 33061:3306 -p 50001:22 -p 50010:50010 --net=mha --ip 172.20.0.2 centos7.4:mha /usr/sbin/init

 其中的命令和端口映射镜像选择或者其他参数都可以自行添加或者修改,但是这条启动命令的非上述参数必须都要带,目录参数:-v /sys/fs/cgroup:/sys/fs/cgroup:ro 和 启动方式参数:/usr/sbin/init 是必须要带的;且启动容器后不会进入交互界面,需要以下命令进入交互界面:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值