在使用docker搭建hadoop分布式集群的时候,需要各容器之间相互免密登录,传统的方式我想或许会很麻烦,特别是当容器达到几百上千台的时候,这时就需要有一种方式来更简单实现免密登录了。

环境介绍:

宿主机:centos 7

docker 版本:18.09.0

镜像版本:ubuntu:14.04(官方镜像,无ssh,需要自行安装)

方法一:

怎么说呢,第一种方法不是不可以,但很麻烦。这里只是说一下方法:

当容器创建完成以后,拷贝容器里面的主机名和ip映射关系到本地host.file文件,通过这个host.file文件远程到容器执行ssh-keygen命令生成秘钥,然后把每一个容器生成的秘钥拷贝到宿主机的authorized_file,最后把host.file文件上传到容器里面/etc/hosts下,把authorized-file文件拷贝到容器的~/.ssh/authorized_keys,当然,这个需要脚本实现,比较麻烦。其实也可以用docker自带的--add-host命令。下面介绍一种更简单的方式

方法二:

(1)因为官方的ubuntu镜像没有ssh,所以需要在ubuntu里面安装,这里有两种方法,第一种是通过Dockerfile文件,第二种是先docker run 然后安装完ssh在执行doxker commit。我这里使用Dockerfile

FROM ubuntu:14.04
MAINTAINER yjt xxx
RUN sudo apt-get update && \
sudo apt-get install -y net-tools openssh-server psmisc iproute wget vim
RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys && \
sed -i 's/PermitEmptyPasswords yes/PermitEmptyPasswords no /' /etc/ssh/sshd_config && \
sed -i 's/PermitRootLogin without-password/PermitRootLogin yes /' /etc/ssh/sshd_config && \
echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config && \
echo " UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config && \
echo "root:1234" | chpasswd
CMD [ "sh", "-c", "sudo service ssh start; bash"]

接下来,命令行执行:

# docker build -t ubuntu-ssh .

通过刚刚生成的镜像启动两台容器:

#  docker run -it --rm --name=yjt1 --net mynetwork --ip 172.20.1.1 --privileged ubuntu-ssh

# docker run -it --rm --name=yjt2 --net mynetwork --ip 172.20.1.2 --privileged ubuntu-ssh

进入到某一台容器执行 ssh yjt1 或者ssh  yjt2 如果能成功的免密登录,那说明OK

列:

进入到容器查看hosts文件:

看到没有,这里并没有做ip与主机的映射,接下来ssh 到yjt1 或者 yjt2 试试效果:

到此,docker容器互相免密就OK了,希望能帮助到需要的朋友。

最新文章

  1. iframe用js设定自定义高度
  2. [Sass]不同样式风格的输出方法
  3. 用SourceTree合并工程冲突,工程打不开时的操作
  4. ajax 参数有中文
  5. Gridview实现删除弹出提示信息
  6. struts2的核心和工作原理
  7. JavaScript深入浅出2-表达式和运算符
  8. MAC下的命令操作
  9. 最小生成树 kruskal hdu 5723 Abandoned country
  10. spring mvc表单自动装入实体对象
  11. dom 拖拽div
  12. .NET DLL 保护措施应用实例(百度云批量保存工具)
  13. c++ - How to use wstring and wcout to output Chinese words in Xcode? - Stack Overflow
  14. MySQL之GROUP BY用法误解
  15. MySQL5.6多实例部署
  16. Unity 类似FingerGestures 的相机跟随功能
  17. Samba服务部署
  18. VS2013 工程属性配置
  19. js循环获取table中的值
  20. linux7 udev的生效

热门文章

  1. C#插入时间
  2. .net通过网络路径下载文件至本地
  3. Java 之 文件过滤器
  4. ABAP-信息结构S901/S902程序问题
  5. sed 修改文件内容
  6. 对于Linux中文件描述符的疑问以及解决
  7. 《Python编程:从入门到实践》第四章 操作列表 习题答案
  8. 17 webpack中babel的配置——静态属性与实例属性
  9. 哇!吐槽!oh shit
  10. Linux中drwxr-xr-x.的意思和权限