docker多容器间免密集群搭建
从云上拉一个7.5版本的contos镜像
[root@myserver ~]# docker pull centos:7.5.1804
查看当前镜像
[root@myserver ~]# docker images
打开三个xshell窗口,每个窗口各执行一条
[root@myserver ~]# docker run -i -t --name Master -h Master -p 50070:50070 centos:7.5.1804 /bin/bash
[root@myserver ~]# docker run -i -t --name Slaver1 -h Slaver1 centos:7.5.1804 /bin/bash
[root@myserver ~]# docker run -i -t --name Slaver2 -h Slaver2 centos:7.5.1804 /bin/bash
下面操作三台都要运行
service安装
[root@Master /]# yum install -y initscripts
ifconfig安装
[root@Master /]# yum install -y net-tools.x86_64
vim安装
[root@Master /]# yum install -y vim
安装ssh客户端
[root@Master /]# yum install -y openssh-clients
安装ssh服务器
[root@Master /]# yum install -y openssh-server
生成秘钥
[root@Master /]# ssh-keygen
一路回车
移动到.ssh目录下
[root@Master /]# cd ~/.ssh
将本机秘钥输入到authorized_keys文件
[root@Master .ssh]# cat id_rsa.pub > authorized_keys
[root@Master .ssh]# cat authorized_keys
添加一个寄宿主机xshell窗口
生成寄宿主机秘钥
[root@myserver ~]# ssh-keygen
一路回车
查看寄宿主机秘钥
[root@myserver ~]# cat ~/.ssh/id_rsa.pub
将四个秘钥全部复制到三台容器的authorized_keys
[root@Master .ssh]# vim authorized_keys
将原来的秘钥删除,把上面四个复制进去。
以上操作完成后,以下指令直接一路回车下去
[root@Master .ssh]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
[root@Master .ssh]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
[root@Master .ssh]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
[root@Master .ssh]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key
[root@Master .ssh]# cd /
查看三台容器的ip
[root@Master /]# ifconfig
创建一个sh文件
[root@Master /]# vim run.sh
将一下命令全部写入run.sh
#!/bin/bash
echo "172.18.0.2 Master" >> /etc/hosts
echo "172.18.0.3 Slaver1" >> /etc/hosts
echo "172.18.0.4 Slaver2" >> /etc/hosts
/usr/sbin/sshd
source /etc/profile
改变文件权限
[root@Master /]# chmod +x run.sh
运行run.sh文件
[root@Master /]# ./run.sh
进行测试
[root@Master /]# ssh Slaver1
退回到原来容器内
[root@Slaver1 ~]# exit
三台容器全部退出
[root@Master /]# exit
为主机保存三个容器的映射,方便主机访问三个容器
[root@myserver ~]# vim /etc/hosts
将三个ip及映射添加进去,里面原本的东西不要动
172.18.0.2 Master
172.18.0.3 Slaver1
172.18.0.4 Slaver2
随后保存三个镜像
[root@myserver ~]# docker commit Master master:v1.0
[root@myserver ~]# docker commit Slaver1 slaver1:v1.0
[root@myserver ~]# docker commit Slaver2 slaver2:v1.0
启动前将刚才的容器删掉
[root@myserver ~]# docker stop Master
[root@myserver ~]# docker rm Master
[root@myserver ~]# docker stop Slaver1
[root@myserver ~]# docker rm Slaver1
[root@myserver ~]# docker stop Slaver2
[root@myserver ~]# docker rm Slaver2
然后分别启动
[root@myserver ~]# docker run -it --name Master --hostname Master -p 50070:50070 master:v1.0
[root@myserver ~]# docker run -it --name Slaver1 --hostname Slaver1 slaver1:v1.0
[root@myserver ~]# docker run -it --name Slaver2 --hostname Slaver2 slaver2:v1.0
每个容器分别执行run.sh
[root@Master /]# ./run.sh
再测试
[root@Master /]# ssh Slaver1
测试成功