(1)拉取一个新的centos镜像docker pull centos:7.2
(2)运行一个容器,准备安装必要的环境
docker run --privileged --dns 8.8.8.8 --dns 8.8.4.4 -h controler --name slurm_control -i -t -v /container_data/:/data centos:centos7 /bin/bash
(3)在容器内安装ssh环境
yum install wget vim
wget -0 /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum cleal all
yum install passwd
yum install openssh-server
修改容器密码(提前yum -y reinstall cracklib-dicts)
echo "123456" |passwd --stdin root
产生公私钥:
ssh-****** -t rsa
cd ~/.ssh/
cp id_rsa.pub authorized_keys
开启前准备(以下指令直接一路回车下去)
ssh-****** -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-****** -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-****** -t rsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-****** -t rsa -f /etc/ssh/ssh_host_ed25519_key
/usr/sbin/sshd
退出容器,制作成新容器
Ctrl+d
Docker stop 2ba4a64c7f80
Docker commit 2ba4a64c7f80 docker_ssh
docker run --privileged -i -t docker_ssh /sbin/init (一直卡在当前界面,重新开启一个新的终端,进入容器内部打开sshd服务)
docker exec -it af40bd07fa0f /bin/bash
systemctl restart sshd.service
echo "123456" |passwd --stdin root
netstat -nplt|grep 22 //查看状态
yum install -y openssh-clients
(6)退出容器,将宿主机的~/.ssh/id_rsa.pub拷贝到容器里的~/.ssh/authorized_keys即可免密码登录
在宿主机上执行
docker cp ~/.ssh/id_rsa.pub aea267757cc9:/root/.ssh/
进入容器后追加到容器的授权码
docker attach aea267757cc9
cat id_dsa.pub >> /root/.ssh/authorized_keys
制作完成,备份为新的镜像
docker commit aea267757cc9 ssh_docker1
docker run -d -p 221:22 --name ssh_container2 -h slaver1 -v /container_data/:/data f57ef7db72aa /usr/sbin/sshd -D
在宿主机上秘密免密码连接测试
ssh -p221 [email protected]
此时宿主机已经可以免密码登录docker容器
(7)为防止docker每次启动ip变动,使用自定义网络后每次皮冻增加一个新的容器的host 列进去
docker network create --subnet=172.18.0.0/16 shadownet
为slurm集群安装两个节点一个是计算节点一个是用控制,一个用来计算节点
以同样的方式开启三台容器,controler,slaver1,slaver2,
docker run -d -p 220:22 --name ssh_container1 -h controler --net shadownet --ip 172.18.0.10 --add-host="slaver1 :172.18.0.11" -v /container_data/:/data 0bedf27156e7 /usr/sbin/sshd -D
docker run -d -p 221:22 --name ssh_container2 -h slaver1 --net shadownet --ip 172.18.0.11 --add-host="controler:172.18.0.10" -v /container_data/:/data 0bedf27156e7 /usr/sbin/sshd -D
下面开始测试容器与容器之间的测试。
之后随便进入一个容器,使用:ssh (controler,slaver1,slaver2任意一个,)然后链接其他两台docker容器
好了,至此,所有两个环节:宿主机<----->容器,容器<------>容器之间的免密码登录工作完成