在使用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了,希望能帮助到需要的朋友。

docker笔记--容器之间如何互相免密?的更多相关文章

  1. [Docker] - 不同容器之间相互访问的实现方式(例如:Client 访问 DB)

    部署了两个独立的容器: Container #1 - Web ClientContainer #2 - SQL Server 不同容器间如何互访? 无法从 Container #1 访问到 Conta ...

  2. centos之间如何实现免密ssh登陆

    在公司产品中,管理平台和下面的主机很多时候都要求免密,免密的逻辑到底是怎么样的呢?今天就简单看看! 首先创建两台虚机,正常情况下ssh登陆对方是需要密码的 先通过ssh-keygen生成一对秘钥 [r ...

  3. 大数据【一】集群配置及ssh免密认证

    八月迷情,这个月会对大数据进行一个快速的了解学习. 一.所需工具简介 首先我是在大数据实验一体机上进行集群管理学习,管理五台实验机,分别为master,slave1,slave2,slave3,cli ...

  4. Ubuntu如何配置SSH免密登录

    前言 在搭建hadoop集群时,需要主机和副机之间实现SSH免密登录 一.环境准备 1.ubuntu两台 二.安装SSH 1.首先检测一下本机有没有安装SSH服务,如果没有任何打印说明未安装 sudo ...

  5. linux配置 ssh 免密 登录

    1:第一步给每一台电脑生成公私钥 使用   在 root 目录下面 使用  ssh-keygen -t rsa ,然后不停敲回车.就可以生成公私钥.默认放在  .ssh 目录下面. 2:进入.ssh ...

  6. [提供可行性脚本] RHEL/CentOS 7 多节点SSH免密登陆

    实验说明: 在自动化部署时,会经常SSH别的机器去操作,然而每次的密码认证却很令人烦躁,尤其是很长的密码,因此SSH免密登陆就显得必不可少: 在机器数目很多的时候,使用更过的往往是Ansible分发并 ...

  7. 宿主机ssh免密登录docker容器

    一.检查系统内核 二.安装docker 1.yum install docker  -y 2.docker version                    #查看docker版本 3.syste ...

  8. Docker学习笔记 - Docker容器之间的连接

    学习目标: 容器之间可以相互连接访问:: --link redis:redisAlias 准备工作 FROM ubuntu:14.04 RUN apt-get install -y ping RUN  ...

  9. docker ssh秘钥免密登录

    一.概述 有一台跳板机,已经实现了免密登录后端服务器.但是我写了一个django项目,它是运行在容器中的,也需要免密登录后端服务器. 虽然可以在容器中手动做一下免密登录,但是容器重启之后,之前做的设置 ...

随机推荐

  1. Java Swing中文乱码解决方法

    Run As Run Configuration,在Arguments中增加下面这句: -Dfile.encoding=gbk

  2. Mybatis之collection与association标签

    collection与association标签的功能就是为了解决查询条件映射到一个类或一个集合上,适用于对于多对一,一对多的映射结果,现在我们就探究其具体使用吧. 环境搭建: 数据库搭建 CREAT ...

  3. java读取文件的几种方式性能比较

    //普通输入流读取文件内容 public static long checksumInputStream(Path filename) { try(InputStream in= Files.newI ...

  4. Vue-resoure 实现get post jsonp请求

    1.之前学习中,如何发起数据请求? 2.常见的数据请求类型?get post jsonp 3.常见的URL请求资源地址 get请求地址:  http://vue.studyit.io/api/getl ...

  5. py-1 语言介绍

    一.编程与编程语言 1.编程的目的 计算机的发明,是为了用机器取代并解放人力.而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑.电脑一样自动执 ...

  6. 在使用pandas获取网上数据报出url错误的解决办法

    在使用pandas.read_csv('网址名')时,出现url错误是,需要在导包出添加一下两句代码 import ssl ssl._create_default_https_context = ss ...

  7. Linux 之 用户、用户组以及权限

    拥有者(user),拥有组(group),其他人(other) 由于Linux是一个多人多任务的系统,因此经常会出现同一台机器同时有多个人进行操作,为了考虑每个人的隐私权以及每个人喜好的工作环境,所以 ...

  8. 用python代码编写象棋界面,棋盘覆盖问题

    编写象棋界面 import turtle t=turtle.Pen() t.speed(100) def angle(x,y): t.penup() t.goto(x+3,y+3) t.pendown ...

  9. Django 中使用权限认证

    权限认证 权限概念 """ 在实际开发中,项目中都有后台运营站点,运营站点里面会存在多个管理员, 那么不同的管理员会具备不同的任务和能力,那么要实现这样的管理员功能,那么 ...

  10. Nginx+PHP负载均衡集群环境中Session共享方案 - 运维笔记

    在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡 ...